sp_server_diagnostics を試してみた
sp_server_diagnostics は、SQL Server 2012 から搭載されたシステムストアドプロシージャです。SQL Server の潜在的な障害を検出するために、診断データと正常性の情報をキャプチャすることができます。まだ、MSDN 上のドキュメントがアップデートされていないのか、結果セットが仕様と異なります。もう少ししたら、2014 のドキュメントがアップデートされると思います。動作確認してみましょう。下記のストアドプロシージャを実行していましょう。
exec sp_server_diagnostics
5 つのコンポーネントの説明は以下のとおりです。
- system: システムの観点から、スピンロック、サーバー処理の条件、応答していないタスク、ページ フォールト、および CPU 使用率のデータを収集します。 この情報から、全体的な正常性状態の推奨設定が生成されます。
- resource: リソースの観点から、物理メモリおよび仮想メモリ、バッファー プール、ページ、キャッシュおよびその他のメモリ オブジェクトのデータを収集します。 この情報から、全体的な正常性状態の推奨設定が生成されます。
- query_processing: クエリ処理の観点から、ワーカー スレッド、タスク、待機の種類、CPU を集中的に使用するセッション、およびブロックしているタスクの情報を収集します。 この情報から、全体的な正常性状態の推奨設定が生成されます。
- io_subsystem: IO のデータを収集します。 このコンポーネントは診断データのほかに、IO サブシステムのみについてクリーンまたは警告の正常性状態を生成します。
- events: ストアド プロシージャを介して、サーバーによって記録されたエラーと対象イベント (リング バッファーの例外の詳細、メモリ ブローカーに関するリング バッファー イベント、メモリ不足、スケジューラ モニター、バッファー プール、スピンロック、セキュリティ、および接続を含む) のデータを収集して表示します。 イベント状態としては、常に 0 が表示されます。<name of the availability group>: 指定された可用性グループのデータを収集します (component_type = "alwaysOn:AvailabilityGroup" の場合)。
always on も含めて、SQL Server 全体のヘルスチェックが可能ですね。まずはこのシステムストアドプロシージャでチェックを行って、何かしら異常が発生していれば( State_Desc あたりをチェックして )、動的管理ビュー、拡張イベント等でのチェックを行うといったところでしょうか。