微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – SQL事务处于死锁状态

有时我得到这种异常不是很忙的sql服务器:
Transaction (Process ID 57) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Line number: 1
Error Number: 1205
Procedure: 
Server name: P01
Error Source: .Net sqlClient Data Provider
Error State: 47

我无法再现它.我试图在同一时间从不同的客户端运行多个查询,但没有显示.
在程序或内部触发器中发生这种问题的最佳方法是什么?我的意思是,如何重新运行交易?

当由触发器调用的过程中发生异常时,如何执行此操作,该过程由某些过程(即:procedure01 – > insert – > trigger – > procedure02!)进行的插入调用.

解决方法

我建议你从两个角度来解决问题.

> Trap or Catch死锁错误,以便您可以重新运行由sql Server数据库引擎选择为死锁受害者的事务.
找出导致死锁事件的原因.
您可以通过以下两种方式之一执行此操作:运行sql Server Profiler跟踪以捕获并记录死锁事件,或者可以启用一些将会将死锁事件的详细信息记录到sql Server错误日志的SQL Server Trace Flags.

在绝大多数情况下,您可以识别死锁事件的原因,并通过数据库模式的结构性更改或对死锁事件负责的逻辑更改进行修复.

进一步阅读请看:

> How to track down Deadlocks Using SQL Server Profiler
> Minimizing Deadlocks
> Detecting and Ending Deadlocks

我希望我已经回答了你的问题,但是让我知道,如果我能以任何方式进一步帮助你.

原文地址:https://www.jb51.cc/mssql/83015.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐