我有一個由兩個實例組成的Windows Azure角色。在一段時間後交易將失敗,並SqlException
用以下文本如何識別SQL Azure中的死鎖?
事務(進程ID N)已被死鎖的鎖資源與另一個進程,並已被選作死鎖犧牲品。重新運行交易。
現在我GOOGLE了一段時間,閱讀this post有關識別使用SQL Server日誌死鎖。
問題是...
如何在SQL Azure中執行此操作?我使用什麼工具訪問SQL Azure的內部並獲取足夠的數據? SQL Azure中的
我有一個由兩個實例組成的Windows Azure角色。在一段時間後交易將失敗,並SqlException
用以下文本如何識別SQL Azure中的死鎖?
事務(進程ID N)已被死鎖的鎖資源與另一個進程,並已被選作死鎖犧牲品。重新運行交易。
現在我GOOGLE了一段時間,閱讀this post有關識別使用SQL Server日誌死鎖。
問題是...
如何在SQL Azure中執行此操作?我使用什麼工具訪問SQL Azure的內部並獲取足夠的數據? SQL Azure中的
監控比SQL Server的更多限制,但這些工具正變得更加可供您下面看:
運行在SQL Azure中數據庫的「主」數據庫以下查詢,
select * from sys.event_log where event_type='deadlock' and database_name='<Databasename>';
有與此查詢性能問題,如果它得到超時嘗試以下,
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('el', NULL, NULL, NULL)
WHERE object_name = 'database_xml_deadlock_report'
這兩個查詢都有與正在執行的進程相關的XML格式的詳細數據。祝你好運!
我不認爲這些查詢都在v12中工作。對我來說,sys.event_log的第一個查詢返回行,但沒有XML。在同一數據庫上,第二個查詢不返回任何行。 – yowl00
現在,Azure SQL數據庫支持兩種獲取死鎖xml報告的方式。您可以使用database_xml_deadlock_report事件創建一個數據庫範圍的XE會話來自己跟蹤它們,或者您可以修改先前答案中的sys.fn_xe_telemetry_blob_target_read_file調用,以使用'dl'而不是'el'。死鎖現在被路由到他們自己的文件,而不是與登錄事件混合在一起。
這個MSDN article有最新信息。
如果您在這裏找不到和可以接受的答案,請不要猶豫直接與Microsoft聯繫。微軟向Azure傾注了大量資源,並且自從Guthrie接任後,他們給予Azure開發人員的支持令人印象深刻。如果失敗了,我會密切注意這個線程,並指導我知道回答這個線程的Azure MVP,因爲我想自己知道答案。 – JSWork