ms sql 中关于spid=2的问题

今天在保存一张单据时,新增是成功的,查询出来删除报错,提示数据超时。追踪发现数据库这笔数据连在SQL中SELECT语句都会超时。用sp_lock查询时,发现该表被一个spid=-2的进程缩死。奇怪了。进程的ID不是只从 1 和 2048 之间的数字吗?所以我估计是可能是系统进程。后来在网上查了一下资料。 原来spid=-2是MS DTC的进程。因为我的web服务器同SQL服务器不同。所以我使用了ms dtc .现在dtc出错,导致该表的这笔数据被锁死。问题知道了。现在是该如何处理了。Kill -2是不行的。因为kill 只能删除 1 和 2048的进程ID号。晕了。最后在网上查了一下资料。 原来kill 不仅可以杀死进程ID外,还能杀 Work ID (UOW) of the DTC transaction。具体做法如下: 1:select req_transactionUOW,* from master..syslockinfo where req_spid =-2,复制 req_transactionUOW字段的值 2: kill 'D5499C66-E398-45CA-BF7E-DC9C194B48CF' 这样就可以了。 msdn 的相关信息请进入:http://msdn.microsoft.com/en-us/library/aa933230(SQL.80).aspx
原文地址:https://www.cnblogs.com/BinZeng/p/Bin.html