如何识别SQL Azure中的死锁?

sha*_*oth 9 sql-server deadlock azure database-deadlocks azure-sql-database

我有一个Windows Azure角色,包含两个实例.偶尔,事务将失败并SqlException带有以下文本

事务(进程ID N)在锁资源上与另一个进程死锁,并被选为死锁牺牲品.重新运行该交易.

现在我已经用Google搜索了一段时间,并阅读了有关使用SQL Server日志识别死锁的帖子.

问题是...

我如何在SQL Azure中执行此操作?我可以使用哪些工具来访问SQL Azure的内部并获取足够的数据?

Igo*_*rek 5

SQL Azure 的监控比 SQL Server 更受限制,但这些工具越来越可供您查看:

http://social.technet.microsoft.com/wiki/contents/articles/troubleshoot-and-optimize-queries-with-sql-azure.aspx


Dha*_*777 5

在 SQL Azure 数据库中的“Master”数据库上运行以下查询,

select * from sys.event_log where event_type='deadlock' and database_name='<Databasename>';
Run Code Online (Sandbox Code Playgroud)

此查询存在性能问题,如果超时请尝试以下操作,

SELECT *
,CAST(event_data AS XML).value('(/event/@timestamp)[1]', 'datetime2') AS TIMESTAMP
, CAST(event_data AS XML).value('(/event/data[@name="error"]/value)[1]', 'INT') AS error
,CAST(event_data AS XML).value('(/event/data[@name="state"]/value)[1]', 'INT') AS STATE
,CAST(event_data AS XML).value('(/event/data[@name="is_success"]/value)[1]', 'bit') AS is_success
,CAST(event_data AS XML).value('(/event/data[@name="database_name"]/value)[1]', 'sysname') AS database_name
FROM sys.fn_xe_telemetry_blob_target_read_file('dl', NULL, NULL, NULL)
WHERE object_name = 'database_xml_deadlock_report'
Run Code Online (Sandbox Code Playgroud)

第二个查询包含与正在执行的流程相关的 XML 格式的数据。祝你好运!