日期:2014-05-17  浏览次数:20576 次

急求一条MSSQL2005查询锁语句:查询出当前数据库中所有引成锁的原SQL语句 万分感谢 急
我的数据库表经常死锁了,
现在出现我只能停止数据库后再启动
但这样不是办法

有没有办法,当出现锁或者死锁的时候,
通过一条SQL语句去查询出当前数据库的所有锁和所有引起这个锁的SQL语句

这样我看到这条SQL语句的时候也好判断是在哪里出错的,好去改自己的程序

万分感谢

------解决方案--------------------
启用1022,3064跟踪标记,有死锁发生时,自动记录到SQL日志中,以利分析.
------解决方案--------------------
参考看看http://www.cnblogs.com/happyhippy/archive/2008/11/14/1333922.html
------解决方案--------------------
--查出OjbId大于0的是哪些ID
exec sp_lock


--再查询出对应OjbId
select * from sysobjects where id=OjbId



产生这种错误的原因大有可能是只有begin tran ,执行中因为错误后直接返回,没有执行commit tran或rollback tran

所以应该在begin tran前加上SET XACT_ABORT ON 


------解决方案--------------------
这个最好是通过sql profiler,能跟踪详细的死锁的信息,不一定要跟踪所有锁的信息,因为锁的信息那是海量的信息,搞不好把你的服务器搞歇菜了哈 :