无法杀死 SPID

Dav*_*rge 5 sql-server-2005 process

我有一个带有 SP4 的 SQL Server 2005 Std (x64),它有一个我似乎无法杀死的过程。如果我查看 sys.dm_exec_requests,我会看到 SPID 103,wait_type 为 LCK_M_SCH_M,状态为 SUSPENDED,命令为 KILLED/ROLLBACK。然而,SPID 并没有消失。我什至可以执行 sp_who 103 并且我看到带有 KILLED/ROLLBACK 的 SPID。自从我杀死 SPID 以来,它的当前等待时间接近 20 小时。

此外,运行KILL 103 WITH STATUS ONLY返回 0% 已完成

gbn*_*gbn 6

有时,SPID 可能会因某些进程外调用而阻塞。

  • xp_sendmail(旧方式)
  • sp_OA%
  • sp_xml 准备文档
  • 等等

您需要停止 SQL Server 甚至重新启动服务器

或者更有可能你会回滚一个巨大的 UPDATE 之类的:等待或重新启动,由你决定......

编辑:Aaron 关于更改数据库状态的评论可能和中间步骤一样有效。

  • 如果 SPID 连接到特定数据库,您可以通过设置该数据库“OFFLINE”或“SINGLE_USER”-“WITH ROLLBACK IMMEDIATE”然后将数据库设置回“ONLINE”或“MULTI_USER”来避免重新启动。如果您有能力暂时使数据库闪烁而不是整个实例,则可能值得一试。 (4认同)