处理死锁
Microsoft SQL Server 数据库引擎 实例选择某事务作为死锁牺牲品后,将终止当前批处理,回滚事务并将 1205 号错误消息返回应用程序。
Your transaction (process ID #52) was deadlocked on {lock | communication buffer | thread} resources with another process and has been chosen as the deadlock victim. Rerun your transaction.
由于可以选择任何提交 Transact-SQL 查询的应用程序作为死锁牺牲品,应用程序应该有能够捕获 1205 号错误消息的错误处理程序。如果应用程序没有捕获到错误,则会继续处理而未意识到已经回滚其事务且已发生错误。
通过实现捕获 1205 号错误消息的错误处理程序,使应用程序得以处理该死锁情况并采取补救措施(例如,可以自动重新提交陷入死锁中的查询)。通过自动重新提交查询,用户不必知道发生了死锁。
应用程序在重新提交其查询前应短暂暂停。这样会给死锁涉及的另一个事务一个机会来完成并释放构成死锁循环一部分的该事务的锁。这将把重新提交的查询请求其锁时,死锁重新发生的可能性降到最低。
请参阅
概念
死锁
检测和结束死锁
将死锁减至最少
处理应用程序中的错误和消息