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优化、其次硬件升级;
最后,归结下,仔细编写并检查自己的代码,避免死锁的发生
无论生活、还是技术,一切都不断的学习和更新~~~努力~