このセクションでは、データベース ミラーリング モニターと sp_dbmmonitor システム ストアド プロシージャについて説明し、データベース ミラーリング監視のしくみ ( データベース ミラーリング モニター ジョブを含む) について説明し、データベース ミラーリング セッションについて監視できる情報を要約します。 さらに、このセクションでは、定義済みの一連のデータベース ミラーリング イベントの警告しきい値を定義する方法と、データベース ミラーリング イベントにアラートを設定する方法について説明します。
ミラーリング セッション中にミラー化されたデータベースを監視して、データが流れているかどうかを確認できます。 サーバー インスタンス上のミラー化された 1 つ以上のデータベースの監視を設定および管理するには、データベース ミラーリング モニターまたは sp_dbmmonitor システム ストアド プロシージャを使用できます。
データベース ミラーリング監視ジョブである データベース ミラーリング モニター ジョブは、データベース ミラーリング モニターとは無関係にバックグラウンドで動作します。 SQL Server エージェントは 、データベース ミラーリング モニター ジョブを 一定の間隔で呼び出し、既定値は 1 分に 1 回、ジョブはミラーリングの状態を更新するストアド プロシージャを呼び出します。 SQL Server Management Studio を使用してミラーリング セッションを開始すると、 データベース ミラーリング モニター ジョブ が自動的に作成されます。 ただし、ミラーリングを開始するために ALTER DATABASE <database_name> SET PARTNER のみを使用する場合は、ストアド プロシージャを実行してジョブを作成する必要があります。
このトピックでは:
ミラーリングの状態の監視
サーバー インスタンス上の 1 つ以上のミラー化されたデータベースの監視を設定および管理するには、データベース ミラーリング モニターまたは dbmmonitor システム ストアド プロシージャを使用できます。 ミラーリング セッション中にミラー化されたデータベースを監視して、データが流れているかどうかを確認できます。
具体的には、ミラー化されたデータベースを監視することで、次のことが可能になります。
ミラーリングが機能していることを確認します。
基本的な状態には、2 つのサーバー インスタンスが稼働しているか、サーバーが接続されていること、およびログがプリンシパルからミラーに移動されているかの把握が含まれます。
ミラー データベースがプリンシパル データベースに対応しているかどうかを確認します。
高パフォーマンス モードでは、プリンシパル サーバーは、プリンシパル サーバーからミラー サーバーに送信する必要がある未送信のログ レコードのバックログを開発できます。 さらに、どの動作モードでも、ミラー サーバーは、ログ ファイルに書き込まれたがミラー データベースに復元する必要がある、保存されていないログ レコードのバックログを開発できます。
高パフォーマンス モード中にプリンシパル サーバー インスタンスが使用できなくなったときに失われたデータの量を確認します。
未送信のトランザクション ログの量 (存在する場合) と、失われたトランザクションがプリンシパルでコミットされた時間間隔を調べることで、データ損失を判断できます。
現在のパフォーマンスと過去のパフォーマンスを比較します。
問題が発生している場合、データベース管理者はミラーリング パフォーマンスの履歴を表示して、現在の状態を理解するのに役立ちます。 履歴を見ると、ユーザーはパフォーマンスの傾向を検出し、パフォーマンスの問題のパターンを特定できます (ネットワークが遅い時間帯やログに入力するコマンドの数が非常に多い時間帯など)。
ミラーリング パートナー間のデータ フローが減少する原因のトラブルシューティングを行います。
主要なパフォーマンス メトリックに警告しきい値を設定します。
新しい状態行にしきい値を超える値が含まれている場合は、情報イベントが Windows イベント ログに送信されます。 システム管理者は、これらのイベントに基づいてアラートを手動で構成できます。 詳細については、「 ミラーリング パフォーマンス メトリックで警告しきい値とアラートを使用する (SQL Server)」を参照してください。
データベース ミラーリングの状態を監視するためのツール
ミラーリングの状態は、データベース ミラーリング モニターまたは sp_dbmmonitorresults システム ストアド プロシージャを使用して監視できます。 これらのツールを使用すると、システム管理者 (sysadmin 固定サーバー ロールのメンバー)、およびシステム管理者によって msdb データベースの固定データベース ロールdbm_monitor固定データベース ロールに追加されたユーザーの両方によって、ローカル サーバー インスタンス上のミラー化されたデータベースのデータベース ミラーリングを監視できます。 いずれかのツールを使用する場合、システム管理者はミラーリングの状態を手動で更新することもできます。
注
システム管理者は、主要なパフォーマンス メトリックの警告しきい値を構成して表示することもできます。 詳細については、「 ミラーリング パフォーマンス メトリックで警告しきい値とアラートを使用する (SQL Server)」を参照してください。
データベース ミラーリング モニター
データベース ミラーリング モニターは、システム管理者が状態を表示および更新し、いくつかの主要なパフォーマンス メトリックに対して警告しきい値を構成できるようにするグラフィカル ユーザー インターフェイス ツールです。 データベース ミラーリング モニターは、 dbm_monitor 固定データベース ロールのメンバーがミラーリング状態テーブルの最新の行を表示するために使用することもできますが、状態テーブルを更新することはできません。
モニターには、選択したデータベースの状態 (パフォーマンス メトリックを含む) が [状態] タブページに表示されます。 このページには、プリンシパル サーバー インスタンスとミラー サーバー インスタンスの両方から取得された情報が表示されます。 状態はプリンシパル サーバー インスタンスとミラー サーバー インスタンスへの別個の接続を使用して収集されるので、このページの値は非同期に設定されます。 モニターは、30 秒間隔で状態テーブルの更新を試みます。 更新は、テーブルが 15 秒以内に更新されておらず、ユーザーが sysadmin 固定サーバー ロールのメンバーである場合にのみ成功します。 [状態] ページで報告される情報の概要については、このトピックで後述する「データベース ミラーリング モニターによって表示される状態」を参照してください。
データベース ミラーリング モニター インターフェイスの概要については、「データベース ミラーリング モニターの 概要」を参照してください。 データベース ミラーリング モニターを起動する方法については、「 データベース ミラーリング モニターの起動 (SQL Server Management Studio)」を参照してください。
システム ストアド プロシージャ
sp_dbmmonitorresults システム ストアド プロシージャを実行して、現在の状態を取得または更新することもできます。 他の dbmmonitor ストアド プロシージャを使用すると、監視の設定、監視パラメーターの変更、現在の更新期間の表示、サーバー インスタンスの監視の削除を行えます。
次の表では、データベース ミラーリング モニターとは別に、データベース ミラーリング監視を管理および使用するためのストアド プロシージャについて説明します。
プロシージャ 説明 sp_dbmmonitoraddmonitoring サーバー インスタンス上のすべてのミラー化されたデータベースの状態情報を定期的に更新するジョブを作成します。 sp_dbmmonitorchangemonitoring データベース ミラーリング監視パラメーターの値を変更します。 sp_dbmmonitorhelpmonitoringデータベースモニタリング支援コマンド 現在の更新期間を返します。 sp_dbmmonitorresults 監視対象データベースの状態行を返し、プロシージャが最新の状態を事前に取得するかどうかを選択できます。 sp_dbmmonitordropmonitoring サーバー インスタンス上のすべてのデータベースのミラーリング モニター ジョブを停止して削除します。 dbmmonitor システム ストアド プロシージャは、データベース ミラーリング モニターの補助として使用できます。 たとえば、 sp_dbmmonitoraddmonitoringを使用して監視を構成した場合でも、データベース ミラーリング モニターを使用して状態を表示できます。
監視のしくみ
このセクションでは、データベース ミラーリングの状態テーブル、データベース ミラーリング モニター ジョブとモニター、ユーザーがデータベース ミラーリングの状態を監視する方法、監視ジョブを削除する方法について説明します。
データベース ミラーリングの状態テーブル
データベース ミラーリングの状態は、 msdb データベースの内部の文書化されていないデータベース ミラーリング状態テーブルに格納されます。 この状態テーブルは、サーバー インスタンスでミラーリングの状態が初めて更新されるときに自動的に作成されます。
状態テーブルは、システム管理者が自動的または手動で更新できます。更新間隔は最小 15 秒です。 最小値が 15 秒の場合、サーバー インスタンスが状態要求でオーバーロードされるのを防ぐことができます。
状態テーブルは、データベース ミラーリング モニターとデータベース ミラーリング モニター ジョブ (実行中の場合) の両方によって自動的に更新されます。 データベース ミラーリング モニター ジョブ は、既定で 1 分に 1 回テーブルを更新します (システム管理者は 1 ~ 120 分の更新期間を指定できます)。 これに対し、データベース ミラーリング モニターでは、30 秒ごとにテーブルが自動的に更新されます。 これらの更新プログラムでは、データベース ミラーリング モニター ジョブとデータベース ミラーリング モニターがsp_dbmmonitorupdateを呼び出します。
sp_dbmmonitorupdate初めて実行すると、msdb データベースにデータベース ミラーリング状態テーブルとdbm_monitor固定データベース ロールが作成されます。 sp_dbmmonitorupdate は、通常、サーバー インスタンス上のすべてのミラー化されたデータベースの状態テーブルに新しい行を挿入することで、ミラーリングの状態を更新します。詳細については、このトピックで後述する「データベース ミラーリングステータステーブル」を参照してください。 この手順では、新しい行のパフォーマンス メトリックも評価され、現在の保持期間より古い行が切り捨てられます (既定値は 7 日です)。 詳細については、「 sp_dbmmonitorupdate (Transact-SQL)」を参照してください。
注
データベース ミラーリング モニターが sysadmin 固定サーバー ロールのメンバーによって現在使用されている場合を除き、状態テーブルは 、データベース ミラーリング モニター ジョブ が存在し、SQL Server エージェントが実行されている場合にのみ自動的に更新されます。
データベース ミラーリング モニター ジョブ
データベース ミラーリング監視ジョブである データベース ミラーリング モニター ジョブは、データベース ミラーリング モニターとは別に動作します。 データベース ミラーリング モニター ジョブ は、SQL Server Management Studio を使用してミラーリング セッションを開始する場合にのみ自動的に作成されます。 ALTER DATABASE database_name SET PARTNER コマンドを常に使用してミラーリングを開始する場合、ジョブはシステム管理者が sp_dbmmonitoraddmonitoring ストアド プロシージャを実行する場合にのみ存在します。
データベース ミラーリング モニター ジョブが作成された後、SQL Server エージェントが実行されていると仮定すると、ジョブは既定で 1 分に 1 回呼び出されます。 その後、ジョブは sp_dbmmonitorupdate システム ストアド プロシージャを呼び出します。
SQL Server エージェントでは、 データベース ミラーリング モニター ジョブ が既定で 1 分に 1 回呼び出され、ジョブは sp_dbmmonitorupdate を呼び出して状態テーブルを更新します。 システム管理者は、 sp_dbmmonitorchangemonitoring システム ストアド プロシージャを使用して更新期間を変更でき、 sp_dbmmonitorchangemonitoring システム ストアド プロシージャを使用して現在の更新期間を表示できます。 詳細については、 sp_dbmmonitoraddmonitoring (Transact-SQL) と sp_dbmmonitorchangemonitoring (Transact-SQL) を参照してください。
データベース ミラーリングの状態の監視 (システム管理者別)
sysadmin 固定サーバー ロールのメンバーは、状態テーブルを表示および更新できます
データベース ミラーリング モニターの使用
データベース ミラーリング モニターを使用する場合、システム管理者は 、状態 ページ、ナビゲーション ツリー、または 履歴 ページを手動で更新できます。 これにより、前の 15 秒以内に既に更新されていない限り、状態テーブルも更新されます。
特定のサーバー インスタンスのミラーリング状態の履歴を表示するには、システム管理者はサーバー インスタンスの [履歴 ] ボタン ( [状態] ページ) をクリックすることもできます。 履歴は、[ データベース ミラーリング履歴 ] ダイアログ ボックスに表示されます。 システム管理者は、サーバー インスタンスの状態テーブルの行の一部またはすべてを表示できます。
[状態] ページのメトリックの詳細については、このトピックで後述する「データベース ミラーリング モニター」で表示されるパフォーマンス メトリックを参照してください。
sp_dbmmonitorresultsの使用
システム管理者は 、sp_dbmmonitorresults システム ストアド プロシージャを使用して、前の 15 秒以内に更新されていない状態テーブルを表示したり、必要に応じてステータス テーブルを更新したりできます。 このプロシージャは 、sp_dbmmonitorupdate プロシージャを呼び出し、プロシージャ呼び出しで要求された量に応じて 1 つ以上の履歴行を返します。 結果セットの状態については、 sp_dbmmonitorresults (Transact-SQL) を参照してください。
データベース ミラーリングの状態の監視 (dbm_monitor メンバー別)
前述のように、sp_dbmmonitorupdate初めて実行すると、msdb データベースにdbm_monitor固定データベース ロールが作成されます。 dbm_monitor 固定データベース ロールのメンバーは、データベース ミラーリング モニターまたは sp_dbmmonitorresults ストアド プロシージャを使用して既存のミラーリングの状態を表示できます。 ただし、これらのユーザーは状態テーブルを更新できません。 表示される状態の経過時間を確認するには、[状態] ページのプリンシパル ログ (<time>) ラベルとミラー ログ (<time>) ラベルで時刻を確認できます。
dbm_monitor固定データベース ロールのメンバーは、データベース ミラーリング モニター ジョブに依存して、一定の間隔で状態テーブルを更新します。 ジョブが存在しない場合、または SQL Server エージェントが停止した場合、状態はますます古くなり、ミラーリング セッションの構成が反映されなくなる可能性があります。 たとえば、フェールオーバー後、パートナーがプリンシパルまたはミラーなどの同じロールを共有しているように見えたり、現在のプリンシパル サーバーがミラー サーバーとして表示され、その一方で現在のミラー サーバーがプリンシパルとして表示されたりすることがあります。
データベース ミラーリング モニター ジョブの削除
データベース ミラーリング モニター ジョブである データベース ミラーリング モニター ジョブは、削除されるまで残ります。 監視ジョブは、システム管理者が管理する必要があります。 データベース ミラーリング モニター ジョブを削除するには、sp_dbmmonitordropmonitoringを使用します。 詳細については、「 sp_dbmmonitordropmonitoring (Transact-SQL)」を参照してください。
データベース ミラーリング モニターによって表示される状態
データベース ミラーリング モニターの [状態] ページには、パートナーとミラーリング セッションの状態が記載されています。 状態には、トランザクション ログの状態などのパフォーマンス メトリックと、現在、フェールオーバーの完了に必要な時間と、セッションが同期されていない場合のデータ損失の可能性を見積もるために役立つその他の情報が含まれます。 さらに、[ 状態] ページには、ミラーリング セッションに関する一般的な状態と情報が表示されます。
注
データベース ミラーリング モニターと 状態 ページの概要については、このトピックの「 データベース ミラーリングの状態を監視するためのツール」を参照してください。
これらのそれぞれに対して提供される情報は、次のセクションにまとめられています。
パートナー
[状態] ページには、各パートナーの次の情報が表示されます。
サーバー インスタンス
[状態] 行に状態が表示されているサーバー インスタンス名。
現在のロール
サーバー インスタンスの現在のロール。 考えられる状態は次のとおりです。
校長
鏡
ミラーリングの状態
考えられる状態は次のとおりです。
未知
[同期中]
シンクロナイズド
一時停止されています
切断された
証人接続
証人の接続状態。 考えられる状態は次のとおりです。
未知
接続済み
途切れ途切れ。
プリンシパル サーバーにログオンする
[状態] ページには、指定された時刻におけるプリンシパル サーバーのログの状態に関する次の情報が表示されます。
未送信ログ
送信キューで待機しているログの量 (KB 単位)。
最も古い未送信トランザクション
送信キュー内の最も古い未送信トランザクションの有効期間。 このトランザクションの経過時間は、トランザクションがまだミラー サーバー インスタンスに送信されていない時間 (分) を示します。 この値は、時間の観点からデータ損失の可能性を測定するのに役立ちます。
ログを送信する時間 (推定)
プリンシパル サーバー インスタンスが、現在送信キューにあるログを、現在の送信レートに基づいてミラー サーバー インスタンスに送信するために必要な推定時間 (分)。 ログを送信する実際の時間は、受信トランザクションのレートの影響を受け、大きく異なる場合があります。 ただし、 ログの送信時間 (推定) の値は、手動フェールオーバーに必要な時間を大まかに見積もる場合に役立ちます。
現在の送信レート
トランザクションがミラー サーバー インスタンスに送信される速度 (KB/秒)。
新しいトランザクションの現在のレート
受信トランザクションをプリンシパルのログに入力しているときの速度 (KB/秒)。 ミラーリングで遅延、待機、遅延の解消が発生しているかどうかを特定するには、この値を [ログの送信時間 (推定)] の値と比較します。
ミラー サーバーにログオンする
[状態] ページには、指定された時刻におけるミラー サーバー上のログの状態に関する次の情報が表示されます。
保存されていないログ
再実行キューで待機しているログの量 (KB 単位)。
ログを復元する時間 (推定)
再実行キュー内のログがミラー データベースに適用されるまでに必要なおおよその時間 (分)。
現在の復元速度
トランザクションをミラー データベースに復元するときの速度 (KB/秒)。
ミラーリング セッション
さらに、[ 状態] ページには、ミラーリング セッションに関する次の情報が表示されます。
ミラーリングコミットのオーバーヘッド
トランザクションあたりの平均遅延時間 (ミリ秒、高セーフティーモードの場合のみ有効)。 この遅延は、プリンシパル サーバー インスタンスがミラー サーバー インスタンスがトランザクションのログ レコードを再実行キューに書き込むのを待機している間に発生するオーバーヘッドの量です。
現在のすべてのログを送信および復元する時間 (推定)
プリンシパルでコミットされたすべての未送信ログを送信し、再実行キューに現在存在するすべてのログを復元するために必要な推定時間。 送信と復元は並行して動作できるため、この見積もりは、 ログの送信時間 (推定) フィールドと 復元時間 (推定) フィールドの値の合計より小さい場合があります。
証人住所
ミラーリング監視サーバー インスタンスのネットワーク アドレス。 このアドレスの形式の詳細については、「サーバー ネットワーク アドレスの指定 (データベース ミラーリング)」を参照してください。
動作モード
データベース ミラーリング セッションには、次の動作モードがあります。
高パフォーマンス (非同期)
自動フェールオーバーを伴わない高い安全性 (同期)
自動フェールオーバーによる高い安全性 (同期)
ミラー化されたデータベースに関するその他の情報ソース
データベース ミラーリング モニターと dbmmonitor ストアド プロシージャを使用してミラー化されたデータベースを監視し、監視対象のパフォーマンス変数に関するアラートを設定するだけでなく、SQL Server 2014 には、データベース ミラーリングのカタログ ビュー、パフォーマンス カウンター、およびイベント通知が用意されています。
このセクションの内容
データベース ミラーリング メタデータ
各データベース ミラーリング セッションは、次のカタログビューまたは動的管理ビューを介して公開されるメタデータで記述されます。
sys.database_mirroring
このビューには、サーバー インスタンス内のミラー化された各データベースのデータベース ミラーリング メタデータが表示されます。 詳細については、「 sys.database_mirroring (Transact-SQL)」を参照してください。
sys.database_mirroring_endpoints
sys.database_mirroring_endpoints カタログ ビューには、サーバー インスタンスのデータベース ミラーリング エンドポイントに関する情報が表示されます。 詳細については、 sys.database_mirroring_endpoints (Transact-SQL) を参照してください。
sys.database_mirroring_witnesses
このカタログ ビューには、サーバー インスタンスがミラー サーバーである各セッションのデータベース ミラーリング メタデータが表示されます。 詳細については、「 sys.database_mirroring_witnesses (Transact-SQL)」を参照してください。
sys.dm_db_mirroring_connections
この動的管理ビューは、データベース ミラーリング ネットワーク接続ごとに 1 行を返します。
詳細については、「 sys.dm_db_mirroring_connections (Transact-SQL)」を参照してください。
データベース ミラーリング のパフォーマンス カウンター
パフォーマンス カウンターを使用すると、データベース ミラーリングのパフォーマンスを監視できます。 たとえば、 トランザクション遅延 カウンターを調べて、データベース ミラーリングがプリンシパル サーバーのパフォーマンスに影響を与えるかどうかを確認し、 再実行キュー カウンターと ログ送信キュー カウンターを調べて、ミラー データベースがプリンシパル データベースにどの程度対応しているかを確認できます。 Log Bytes Sent/sec カウンターを調べて、1 秒あたりに送信されるログの量を監視できます。
どちらのパートナーのパフォーマンス モニターでも、データベース ミラーリング パフォーマンス オブジェクト (SQLServer:Database Mirroring) でパフォーマンス カウンターを使用できます。 詳細については、「 SQL Server、データベース ミラーリング オブジェクト」を参照してください。
パフォーマンス モニターを起動するには
データベース ミラーリング イベント通知
イベント通知は、特殊な種類のデータベース オブジェクトです。 イベント通知は、さまざまな Transact-SQL データ定義言語 (DDL) ステートメントと SQL トレース イベントに応答して実行され、サーバーイベントとデータベース イベントに関する情報を Service Broker サービスに送信します。
データベース ミラーリングでは、次のイベントを使用できます。
Database Mirroring State Change イベント クラス
これは、ミラー化されたデータベースのミラーリング状態がいつ変わるか示します。 詳細については、「 データベース ミラーリング状態変更イベント クラス」を参照してください。
Audit Database Mirroring Login イベント クラス
これにより、データベース ミラーリング トランスポート セキュリティに関連する監査メッセージが報告されます。 詳細については、「 Audit Database Mirroring Login イベント クラス」を参照してください。
関連タスク
ストアド プロシージャ