12

2つのインスタンスで構成されるWindowsAzureの役割があります。時々、トランザクションはSqlException次のテキストで失敗します

トランザクション(プロセスID N)は、別のプロセスとのロックリソースでデッドロックされ、デッドロックの犠牲者として選択されました。トランザクションを再実行します。

今、私はしばらくの間グーグルで検索し、SQLServerログを使用してデッドロックを特定することについてのこの投稿を読みました。

問題は...

SQL Azureでそれを行うにはどうすればよいですか?SQL Azureの内部にアクセスし、十分なデータを取得するためにどのツールを使用しますか?

4

3 に答える 3

5

SQLAzureの監視はSQLServerよりも制限されていますが、以下のツールを利用できるようになっています。

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

于 2011-11-03T18:41:10.700 に答える
5

SQLAzureデータベースの「マスター」データベースで次のクエリを実行します。

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('dl', NULL, NULL, NULL)
WHERE object_name = 'database_xml_deadlock_report'

2番目のクエリには、実行中のプロセスに関連するXML形式のデータがあります。幸運を!

于 2016-03-03T03:46:04.320 に答える
2

現在、Azure SQLデータベースは、デッドロックxmlレポートを取得する2つの方法をサポートしています。database_xml_deadlock_reportイベントを使用してdbスコープのXEセッションを作成し、それらを自分で追跡するか、以前の回答のsys.fn_xe_telemetry_blob_target_read_file呼び出しを変更して、「el」の代わりに「dl」を使用することができます。デッドロックは、ログインイベントと混同されるのではなく、独自のファイルにルーティングされるようになりました。

このMSDNの記事には、最新の情報が含まれています。

于 2016-06-24T16:58:30.780 に答える