Sql server sql_who2在BlkBy列中给出-2
今天,我们的dev服务器出现了一个问题,其中一个进程锁定了一个表,停止了该表上的所有其他查询。运行Sql server sql_who2在BlkBy列中给出-2,sql-server,locking,Sql Server,Locking,今天,我们的dev服务器出现了一个问题,其中一个进程锁定了一个表,停止了该表上的所有其他查询。运行sql\u who2时,blkBy列的值为-2,但-2不在进程列表中 运行DBCC INPUTBUFFER(-2)时,我得到了指定的异常无效SPID-2 运行时,我看到它锁定的所有表和索引,但所有其他信息都为null,除了ownertype是Transaction 当重新启动webapp时(web.config中做了更改),锁被解除,并且-2 SPID的所有痕迹也被解除 我的问题是,为什么SPID是
sql\u who2
时,blkBy列的值为-2,但-2不在进程列表中
运行DBCC INPUTBUFFER(-2)
时,我得到了指定的异常无效SPID-2
运行时,我看到它锁定的所有表和索引,但所有其他信息都为null,除了ownertype是Transaction
当重新启动webapp时(web.config中做了更改),锁被解除,并且-2 SPID的所有痕迹也被解除
我的问题是,为什么SPID是负值,为什么我不能获取有关它的任何信息?SPID为-2表示进程被孤立的分布式事务阻塞 您可以使用
KILL'GUID-OF-THE-UOW'
终止孤立的分布式事务或任何其他分布式事务。为此,您需要从sys.dm\u tran\u locks.request\u owner\u GUID
获取工作单元(UOW)的GUID
SELECT
[tl].[request_owner_guid]
FROM
sys.dm_tran_locks tl
WHERE
[tl].[request_session_id] = -2
-2只是一种人为的联想。会话ID为-2,通过查询动态管理视图中的会话ID列,可以更容易地识别孤立事务。SPID为-2表示进程被孤立的分布式事务阻止 您可以使用
KILL'GUID-OF-THE-UOW'
终止孤立的分布式事务或任何其他分布式事务。为此,您需要从sys.dm\u tran\u locks.request\u owner\u GUID
获取工作单元(UOW)的GUID
SELECT
[tl].[request_owner_guid]
FROM
sys.dm_tran_locks tl
WHERE
[tl].[request_session_id] = -2
-2只是一种人为的联想。会话ID-2只是通过查询动态管理视图中的会话ID列,更容易识别孤立事务。Thx!您知道如何找到分布式事务的源吗?有任何信息吗?您应该能够通过在开始>运行时键入“dcomcnfg”来打开Microsoft分布式事务协调器MMC管理单元。。。对话在本地DTC节点下,查找已标记为可疑的交易。很可能此事务来自远程服务器。Thx!您知道如何找到分布式事务的源吗?有任何信息吗?您应该能够通过在开始>运行时键入“dcomcnfg”来打开Microsoft分布式事务协调器MMC管理单元。。。对话在本地DTC节点下,查找已标记为可疑的交易。此事务可能来自远程服务器。