Sqlserver 死锁问题

关于数据库死锁,建议先查到出死锁点,根据死锁点再分析问题所在,进而优化或改正问题

那么,第一步就是死锁查询:

1、sp_who 或 sp_who2
2、Select * from sysprocesses where blocked <> 0
3:、企业管理器->服务器->管理工具->活动->当前活动 然后把他kill掉。。。 

进程信息中,如果发现旁边有一个锁状的图标,就表明这个进程是死锁,kill掉

4、SQL code 先执行 sp_lock Mode 是 X 代表的是死锁 然后 kill 对应的ID
5、SQL事件探查器,监控一下,看主要是那些处理引起的死锁.然后做相应的处理.
用事件探查器new一个trace,监视一下造成你sqlserver停顿的情况。。。

上述方式,只能查看到死锁点。综合上述方式,可以快速定位。

那怎么分析死锁产生原因呢?

我的建议:

从死锁点开始,通过sp_who和事件探查器来跟踪相应的调用,来分析所使用sql是否产生死锁因子。

从而优化或改进。

如果没有跟踪出问题,建议你做db优化、其次硬件升级;

最后,归结下,仔细编写并检查自己的代码,避免死锁的发生

原文地址:https://www.cnblogs.com/GoGoagg/p/1694853.html