当前位置: 代码迷 >> SQL >> SqlServer 并发事宜:死锁跟踪(三)3种跟踪死锁的方法总结
  详细解决方案

SqlServer 并发事宜:死锁跟踪(三)3种跟踪死锁的方法总结

热度:49   发布时间:2016-05-05 10:55:32.0
SqlServer 并发事务:死锁跟踪(三)3种跟踪死锁的方法总结


方法一:打开profiler跟踪事件 locks: deadlock graph





方法二:打开1222或者1204标志记录死锁,在sqlserver日志查看

DBCC TRACEON(1222,-1)  DBCC TRACEON(1204,-1)




如果日志太多就不好找了,这时可以用系统扩展存储过程筛选!--查看是否死锁,确定死锁的的时间exec xp_readerrorlog 0,1,'DeadLock',NULL,'2015-01-01','2015-01-10','DESC'--按时间查看sqlserver日志,即为死锁信息exec xp_readerrorlog 0,1,NULL,NULL,'2015-01-07 22:13:10.300','2015-01-07 22:13:10.330','DESC'




方法三:系统扩展事件会话system_health自动记录

--扩展事件会话的信息select * from sys.dm_xe_sessions where name = 'system_health'SELECT 	xed.value('@timestamp','datetime')as Creation_Date,  	xed.query('.')AS Extend_Event  FROM (  	SELECT CAST([target_data] AS XML)AS Target_Data  	FROM sys.dm_xe_session_targets AS xt  	INNER JOIN sys.dm_xe_sessions AS xs  	ON xs.address= xt.event_session_address  	WHERE xs.name=N'system_health'  	AND xt.target_name=N'ring_buffer') AS XML_Data  CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]')AS XEventData(xed)  ORDER BY Creation_Date DESC




SqlServer 并发事务:死锁跟踪(二)确定死锁锁定的资源

SqlServer 并发事务:死锁跟踪(一)


  相关解决方案