マイクロソフトは、1 つのダウンロード可能なファイルとして Microsoft SQL Server 2008の修正プログラムを配布します。修正プログラムは累積的であるため、新しいリリースごとにすべての修正プログラムが含まれていて、以前の SQL Server 2008 に含まれていたすべてのセキュリティ修正プログラムの更新プログラムのリリースします。
現象
以下の事例で説明します。Microsoft SQL Server 2008 データベースでは、デッドロックが発生します。次に、デッドロックのグラフをキャプチャするのに、実は拡張イベント セッションを使用します。この場合、次のようなエラー メッセージが表示されます。
メッセージ 9436、レベル 16、状態 1、行 1
XML の解析: 行 54、文字 12、終了タグが開始タグと一致しません
たとえば、デッドロックが発生したとき、実はセッションから buffer_ring ターゲットをエクスポートするのには次のクエリを実行します。
select XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraphFROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'
この例では、クエリは正しい結果を返します。
ただし、XML 形式でこのデッドロック グラフをキャストするのには次のクエリを実行することもできます。
select cast(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as xml) as DeadlockGraphFROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'
このような場合は、XML 形式でのデッドロックのグラフを参照してくださいする予定です。デッドロックのグラフが正しく表示されない場合でもまだ必要 xml_deadlock_report レポートのコンテンツの有効な XML を参照してください。ただし、次のエラー メッセージが表示されます。
メッセージ 9436、レベル 16、状態 1、行 1
XML の解析: 行 54、文字 12、終了タグが開始タグと一致しません
原因
この問題は、デッドロック グラフを XML スキーマを生成するコード パスは、犠牲者のリスト要素の終了タグをスキップするために発生します。また、コード パスでは、デッドロック要素の不要なタグを追加します。
解決策
この問題の修正プログラムは、SQL Server 2008 Service Pack 1 の累積的な更新 6 で初めてリリースされました。この累積的な更新プログラム パッケージの詳細については、マイクロソフト サポート技術情報の記事を表示するのには次の資料番号をクリックします。
977443関数形式は、SQL Server 2008 Service Pack 1 の 6 のパッケージを更新します。