您什么时候开始对 SQL Server 2005/2008 死锁进行故障排除以及如何解决?警报通过 SQL Server 性能条件警报、对象->SQLServer:Locks、计数器->Lock Waits/Sec、Instance:_Total、警报如果计数器:上升到值 3 来打开 SSMS。这是一种主动监控它的方式吗?可接受的值是多少?我非常感谢您的帮助。谢谢!!!
您什么时候开始对 SQL Server 2005/2008 死锁进行故障排除以及如何解决?警报通过 SQL Server 性能条件警报、对象->SQLServer:Locks、计数器->Lock Waits/Sec、Instance:_Total、警报如果计数器:上升到值 3 来打开 SSMS。这是一种主动监控它的方式吗?可接受的值是多少?我非常感谢您的帮助。谢谢!!!
当服务器上发生死锁时,您可以使用事件通知来获得通知:
看:
附加链接:
首先要做的是查看死锁图,看看到底发生了什么。然后你可以考虑你的选择,这通常归结为a)修改应用程序以标准化锁定对象的顺序(例如,如果可能给定应用程序逻辑,与你的开发人员约定始终按字母顺序锁定表)或b ) 查看您是否真的在每个事务中以适当的隔离级别进行操作。
我会使用自动服务器端跟踪 2 个主要问题:
长查询(您建立的持续时间对您的环境来说很长)
死锁 - 检查死锁图和锁:死锁链
您每天都会获得跟踪文件,并且可以监控操作 - 查看是否某些预定事件导致了问题。您可以在以下问题中查看有关分析生产的更多详细信息:Using SQL Profiler on a database that's in production。
尝试设置跟踪标志,如本书在线文章中所述:http: //msdn.microsoft.com/en-us/library/ms178104%28SQL.90%29.aspx
如果您为消息 1205 启用日志记录,则带有 SQL Server 管理包的 System Center Operations Manager (SCOM) 可以在死锁时发出警报。您可以使用以下 SQL 查询启用它:
EXEC sp_altermessage 1205, 'WITH_LOG', 'true'
。另外,请参阅我对“为什么死锁图中没有填充对象名和索引名?”的回答。对于我编写的 PowerShell 脚本,该脚本将从事件缓冲区中提取死锁信息并将死锁图写入 xdl 文件,这些文件可以在 SQL Management Studio 2012 或更高版本中打开或在记事本中查看以查看更多详细信息。