2013-05-08 20 views
0

我正在尝试查找并终止在其中一个表上设置了锁的会话,并且正在停止执行许多其他查询。对于我使用下面的脚本:SQL Server中的负SPID?

SELECT REQUEST_MODE, REQUEST_TYPE, REQUEST_SESSION_ID 
FROM sys.dm_tran_locks 
WHERE RESOURCE_TYPE = 'OBJECT' 
AND RESOURCE_ASSOCIATED_ENTITY_ID =(SELECT OBJECT_ID('System')) 

的结果集我得到的是如下:

enter image description here

运行EXEC sp_who2不带负SPID返回任何一行。我如何找到锁定我的表的会话?

回答

5

sys.dm_tran_lockREQUEST_SESSION_ID

值-2指示该请求属于孤立的分布式事务。

因此,这里没有实际的会话ID。阅读的言论应该引起你KILL

使用KILL UOW终止孤立的分布式事务。这些事务不与任何实际会话ID关联,而是与会话ID ='-2'人为关联。通过查询sys.dm_tran_locks,sys.dm_exec_sessions或sys.dm_exec_requests动态管理视图中的会话ID列,此会话ID可以更容易地识别孤立的事务。

+0

非常感谢! – 2013-05-08 08:18:09

+0

+1有一个涉及链接服务器的迁移脚本出现此问题。 – mCasamento 2013-12-04 06:11:25