次の方法で共有


sp_dbmmonitorresults (Transact-SQL)

適用対象: SQL Server

データベース ミラーリング監視履歴が格納されている状態テーブルから、監視対象データベースの状態行を返し、プロシージャが最新の状態を事前に取得するかどうかを選択できます。

Transact-SQL 構文表記規則

構文

sp_dbmmonitorresults
    [ @database_name = ] N'database_name'
    [ , [ @mode = ] mode ]
    [ , [ @update_table = ] update_table ]
[ ; ]

引数

[ @database_name = ] N'database_name'

ミラーリングの状態を返すデータベースを指定します。 @database_namesysname で、既定値はありません。

[ @mode = ] mode

返される行数を指定します。 @modeint であり、これらの値のいずれかを指定できます。

説明
0 最後の行
1 過去 2 時間の行
2 過去 4 時間の行
3 過去 8 時間の行
4 行の最後の日
5 過去 2 日間の行
6 過去 100 行
7 最後の 500 行
8 過去 1,000 行
9 過去 1,000,000 行

[ @update_table = ] update_table

結果を返す前にプロシージャを指定します。 @update_tableint で、既定値は 0 です。

  • 0 = データベースの状態は更新されません。 結果は最新 2 行のみから計算されます。行の古さは状態テーブルが更新された日時を基に判断されます。

  • 1 = 結果を計算する前に sp_dbmmonitorupdate を呼び出して、データベースの状態を更新します。 ただし、前の 15 秒以内に状態テーブルが更新された場合、またはユーザーが固定サーバー ロールである sysadmin のメンバーでない場合、 sp_dbmmonitorresults は状態を更新せずに実行されます。

リターン コードの値

なし。

結果セット

指定したデータベースの履歴状態の要求された行数を返します。 各行には、次の情報が含まれています。

列名 データ型 説明
database_name sysname ミラー化されたデータベースの名前。
role int サーバー インスタンスの現在のミラーリング ロール:

1 = プリンシパル
2 = ミラー
mirroring_state int データベースの状態。

0 = 中断
1 = 切断
2 = 同期中
3 = 保留中のフェールオーバー
4 = 同期済み
witness_status int データベースのデータベース ミラーリング セッションにおけるミラーリング監視サーバーの接続状態は、次のようになります。

0 = 不明
1 = 接続済み
2 = 切断
log_generation_rate int このデータベースのミラーリング状態の前の更新以降に生成されたログの量 (KB/秒)。
unsent_log int プリンシパルの送信キューの未送信ログのサイズ (KB 単位)。
send_rate int プリンシパルからミラーへのログの送信レート (キロバイト/秒)。
unrestored_log int ミラー上の再実行キューのサイズ (キロバイト単位)。
recovery_rate int ミラーの再実行率 (KB/秒単位)。
transaction_delay int すべてのトランザクションの合計遅延 (ミリ秒単位)。
transactions_per_sec int プリンシパル サーバー インスタンスで 1 秒あたりに発生しているトランザクションの数。
average_delay int データベース ミラーリングによる各トランザクションのプリンシパル サーバー インスタンスの平均遅延。 ハイ パフォーマンス モード (つまり、 SAFETY プロパティが OFF に設定されている場合) では、通常、この値は 0
time_recorded datetime データベース ミラーリング モニターが行を記録した時刻。 この値は、プリンシパルのシステム クロック時間です。
time_behind datetime ミラー データベースが現在追い付いているプリンシパルのシステム クロック時間の概算。 この値はプリンシパル サーバー インスタンスでのみ意味を持ちます。
local_time datetime この行が更新されたときのローカル サーバー インスタンスのシステム クロック時間。

解説

sp_dbmmonitorresults は、 msdb データベースのコンテキストでのみ実行できます。

アクセス許可

sysadmin固定サーバー ロールまたはmsdb データベースのdbm_monitor固定データベース ロールのメンバーシップが必要です。 dbm_monitor ロールを使用すると、メンバーはデータベース ミラーリングの状態を表示できますが、更新は行いませんが、データベース ミラーリング イベントの表示や構成は行いません。

Note

sp_dbmmonitorupdateが初めて実行されると、msdb データベースにdbm_monitor固定データベース ロールが作成されます。 sysadmin固定サーバー ロールのメンバーは、任意のユーザーをdbm_monitor固定データベース ロールに追加できます。

次の例では、データベースの状態を更新せずに、前の 2 時間に記録された行を返します。

USE msdb;
EXEC sp_dbmmonitorresults AdventureWorks2022, 2, 0;