我们有一个运行了 4 个小时的进程。因为运行时间太长,导致数据库出现其他问题,所以决定杀掉这个进程。
现在,该进程处于挂起状态。它还声明它在查询 sp_who2 后被自己阻止。
在活动监视器中,这是 waitresource 信息:
objectlock lockPartition=0 objid=xxx subresource=FULL dbid=2 id=lockyyyy mode=X associatedObjectid=xxx
您会注意到 objid 和 associatedObjectId 是相同的值。
查询 sys.objects 表显示该对象 ID 没有结果。
Sql Server 是否正在等待一个不再存在的对象的锁定?如何在不重新启动 Sql Server 的情况下摆脱这个过程?(我们的 DBA 没有响应帮助请求)。
请记住,这是一个测试环境,但它正在停止所有开发/测试,因为我们无法将任何更改部署到我们的数据库,因为其中一项更改正在影响进程正在访问的对象之一。
编辑:来自活动监视器的更多信息:Command = 'KILLED/ROLLBACK' TASK STATE = 'SUSPENDED'