由于负spid锁定导致MS SQL Server查询被挂起(-2)

时间:2017-11-30 14:12:00

标签: sql-server sql-server-2008 jpa

您好我有以下问题。

我正在使用eclipse运行Java Web程序,我正在使用JPA进行sql事务。对于程序执行的特定表,插入发生异常并且事务被回滚。从这一刻起,我无法从管理工作室做任何事情。 我试图从Microsoft sql管理工作室运行一个简单的查询(从表中选择*),但它始终处于等待Saying"执行查询"。其他表工作正常。我使用了活动监视器,对于这个查询,它说

Wait Type = "LCK_M_IS"

Wait Resource = "objectlock lockPartition=0 objid=612405451 subresource=FULL dbid=34 id=lock89b2d280 mode=X associatedObjectId=612405451    -2      16  MY_SERVER_CODE  internal "

BlockedBy = "-2"

杀死所有连接,关闭程序,重启windows doenst似乎解决了问题。 BlockedBy 字段应该向我显示阻止我查询的sid,但我找不到任何关于-2的内容 有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

Paul Randal在这里处理了这个问题:Disaster recovery 101: dealing with negative SPIDS (-2 and -3)

  

SPID -2是孤立的DTC交易。延期交易是无法完全恢复交易的交易   一个I / O错误或总文件系统问题,如不可用的文件

以下是处理负差距的步骤

在查询下方运行

select request_owner_guid as [UoW ID] 
from sys.dm_tran_locks where
 request_session_id = -2

然后使用下面的杀人

kill {UoW ID}

参考文献:
http://www.eraofdata.com/sql-server/troubleshooting-sql-server/orphaned-msdtc-transactions-2-spids/