次の方法で共有


system_health セッションの使用

system_health セッションは、既定で SQL Serverに含まれている拡張イベント セッションです。 このセッションは、 SQL Server データベース エンジン の起動時に自動的に開始されます。実行中にパフォーマンスに大きな影響が及ぶことはありません。 データベース エンジンのパフォーマンスの問題をトラブルシューティングするのに役立つシステム データを収集します。 そのため、このセッションを停止または削除しないことをお勧めします。

このセッションでは、次の情報を収集します。

  • 重大度 >が =20 のエラーが発生したセッションのsql_textとsession_id。

  • メモリ関連のエラーが発生したすべてのセッションの sql_text とsession_id。 エラーには、17803、701、802、8645、8651、8657、8902 などがあります。

  • 応答していないスケジューラの問題の記録 (これらは、エラー 17883 としてSQL Serverエラー ログに表示されます)。

  • 検出されたすべてのデッドロック。

  • ラッチ (またはその他の興味深いリソース) > を 15 秒間待機したセッションのコールスタック、sql_text、およびsession_id。

  • 30 秒間ロック > を待機しているセッションのコールスタック、sql_text、およびsession_id。

  • プリエンプティブ待機のために長時間待機しているすべてのセッションの callstack、sql_text、および session_id。 待機時間は、待機の種類によって異なります。 プリエンプティブ待機とは、 SQL Server が外部の API 呼び出しを待機している状態です。

  • CLR の割り当てと仮想の割り当ての失敗に対する呼び出し履歴と session_id。

  • メモリ ブローカー、スケジューラ モニター、メモリ ノード OOM、セキュリティ、接続性に関する ring_buffer イベント。

  • sp_server_diagnostics からのシステム コンポーネントの結果。

  • scheduler_monitor_system_health_ring_buffer_recorded によって収集されたインスタンスの正常性。

  • CLR 割り当ての失敗。

  • connectivity_ring_buffer_recorded を使用する接続のエラー。

  • security_error_ring_buffer_recorded を使用するセキュリティのエラー。

セッション データの表示

このセッションでは、リング バッファー ターゲットを使用して、データを格納します。 セッション データを表示するには、次のクエリを使用します。

SELECT CAST(xet.target_data as xml) FROM sys.dm_xe_session_targets xet  
JOIN sys.dm_xe_sessions xe  
ON (xe.address = xet.event_session_address)  
WHERE xe.name = 'system_health'  

イベント ファイルからセッション データを表示するには、Management Studio の拡張イベント ユーザー インターフェイスを使用します。 詳細については、「 イベント セッション データの表示 」を参照してください。

system_health セッションの復元

system_health セッションを削除した場合、クエリ エディターで u_tables.sql ファイルを実行することでそのセッションを復元できます。 このファイルは次のフォルダーにあります。C: は、SQL Server プログラム ファイルをインストールしたドライブを表します。

C:\Program Files\Microsoft SQL Server\MSSQL12。<Instanceid>\MSSQL\Install

セッションを復元したら、ALTER EVENT SESSION ステートメントを使用するか、オブジェクト エクスプローラーで [拡張イベント] ノードを使用して、セッションを開始する必要があります。 ただし、そのようにして開始しない場合でも、次に SQL Server サービスを再起動したときにセッションは自動的に開始されます。

参照

拡張イベントのツール