我收到了来自应用程序的以下错误消息:
事务(进程ID 116)在Lock |通讯 用另一个进程缓冲资源,并已被选择为无效资源 锁定受害者。返回交易。
但是我想知道什么是(进程ID 116)以及什么错误原因?
此致
拉胡尔。
答案 0 :(得分:0)
Rahul,这表示session_id。如果您熟悉Adam Machanic的sp_WhoIsActive,则可以运行它。或从http://whoisactive.com/下载。
除了您的特定问题外,此存储过程还提供了很多不错的见解,包括阻止信息和其他诊断信息。这可能有助于您检查错误原因。
答案 1 :(得分:0)
什么是(进程ID 116)?
SQL Server中的SPID是服务器进程ID 。这些进程ID本质上是SQL Server中的会话。每次应用程序连接到SQL Server时,都会创建一个新的连接(或SPID)。进程ID 116只是SPID 116
使用EXEC sp_who2
查找SQL Server中的所有会话。
错误原因是什么?
任何两个SQL Server进程ID锁定a时发生死锁 单独的资源,并且每个资源都试图访问 资源被其他进程锁定。
修复/分辨率:
尝试使用SQL Server Profiler来分析死锁。 http://msdn.microsoft.com/en-us/library/ms188246.aspx
在每个调用了事务(锁定)的脚本中,请尽早开始事务并尽快提交。
尝试根据脚本来设置最佳锁定时间值。请使用@@LOCK_TIMEOUT
在每个脚本中设置DEADLOCK_PRIORITY值,以使优先级进程不会死锁。使用SET DEADLOCK_PRIORITY
为每个TSQL查询使用查询提示。
在选择语句中使用WITH NOLOCK
(不需要等待/锁定时)