“TASK MANAGER”进程正在接管一个单用户模式的数据库。它是什么?

gal*_*ets 13 sql-server-2008 sql-server

这是我在stackoverflow 上提出的问题的重复,但有人建议我,这里有人可以更好地了解发生了什么。

我有一个偶发的问题,当在单用户模式下升级 SQL Server 时,使用 .NET SqlConnection,其他一些应用程序以某种方式登录到数据库,同时执行 SQL 代码,并将我的进程踢出去。SqlConnection 不会以任何方式关闭或处理。但是其他一些应用程序以某种方式最终连接到数据库,这将我的连接踢出去。

当我运行 sp_who 时,我可以看到控制数据库的进程是 Command="TASK MANAGER"。

任何人都可以告诉我这个过程是什么,它的目的是什么,它究竟是如何进入数据库的,它是单用户模式,并且有一个活动连接?

Sti*_*nts 10

今天遇到了同样的问题,如果你没有把你的 AUTO_UPDATE_STATISTICS ASYNC OFF,你将无法进入你的数据库,你可以通过让你的数据库脱机来解决这个问题。重要的是要知道你需要把你的死锁优先级设​​置为高,否则你会死锁在命令之外。使用以下命令退出单用户模式

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET OFFLINE WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)

其次是

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET ONLINE WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)

其次是

SET DEADLOCK_PRIORITY HIGH

ALTER DATABASE [YourDBName] SET MULTI_USER WITH ROLLBACK IMMEDIATE
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你。但是我发现不需要离线/在线步骤;当首先完成“SET DEADLOCK_PRIORITY HIGH”时,“SET MULTIUSER WITH ROLLBACK IMMEDIATE”单独工作 (3认同)

gal*_*ets 7

我想谜底终于解开了

在将数据库设置为 SINGLE_USER 之前,请确认 AUTO_UPDATE_STATISTICS_ASYNC 选项设置为 OFF。设置为 ON 时,用于更新统计信息的后台线程会与数据库建立连接,您将无法在单用户模式下访问数据库。


小智 6

停止“system_health”扩展事件跟踪。它将列在

SQL Server Management Studio
-> [ServerName]
-> Management
-> Extended Events
-> Right-Click on 'System_health'
-> Hit Stop Session

修复阻止程序后,重新启动会话。