在SQL里线程管理里看见有一个线程阻塞,其他请求该表的线程在等待!

解决方案 »

  1.   

    必须找到死锁的原因(SP_LOCK/SP_WHO)
    尽可能将事务分解到最小
      

  2.   

    设置@locktime,捕获量1222错误,在处理
      

  3.   

    对于DEADLOCK的进程,你可以通过ERROR CODE:1205来判断,是否有DEADLOCK发生,然后KILL掉,一般防止DEADLOCK的方法是通过事务来控制,通过LOCK的机制来解决.在SYSPROCESSES中有MSSQLSERVER当前处理的的进程的信息.
      

  4.   

    在查詢時寫法如下:可以避免死鎖
    select * from table_a(Nolock)
    用sp_lock 可以查看是否死鎖,有時一定真正的死鎖,可能是共享鎖或者排他鎖,如果是真的被鎖可以將之kill 掉