SQL在死锁的时候会自动解锁,但是会造成数据丢失
最好是能通过代码优化来避免这一点.

解决方案 »

  1.   

    1、SQL SERVER本身会监测和处理死锁,处理方法是死锁双方出错退出。
    2、如果程序经常会发生死锁,说明程序有优化的必要。或者服务器的工作量太大,可以考虑升级服务器
      

  2.   

    谢谢你们的回答,sql能够自动解锁吗?为什么我总是要手工删除进程呢!!是不是需要设置什么?还有你们说的处理死锁,sql只是把进程阻塞了吧!!!!用程序优化我也想过不过程序实在试太多,能不能直接在sql中进行锁的处理!!有办法吗!!!
      

  3.   

    阻塞不是死锁,这个概念要搞清楚.
    阻塞是一个进程必须等另一个进程完成,死锁是多个(大部分是两个)进程互相等待,没有办法解开.
    阻塞造成速度慢,死锁也造成速度慢,但死锁sql会自动处理,并出错.估计你的问题是比较严重的阻塞,应该从程序上找原因,因为一个效率低的FOR UPDATE查询或者UPDATE操作足以阻塞一个服务器.还是那句话,发现问题比解决问题困难得多,需要察看阻塞的情况,找出效率低的语句,才有可能解决.
      

  4.   

    首先谢谢csdn经理,不过想要找到这个问题确实不容易,因为我们也不是天天发生,等我找到了再向大家请教!!!!!!!!!
      

  5.   

    你可以用sp_who和查询sysprocess表,查出死锁和阻塞的进程,然后kill掉,或者在程序里设置处理时间,若处理大于你设置的时间的话,就做出相应的处理。