分享方式:


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_name為 sysname,沒有預設值。

[ @mode = ] 模式

指定傳回的數據列數量。 @mode為 int,而且可以是下列其中一個值。

Description
0 最後一列
1 過去兩個小時的數據列
2 過去四個小時的數據列
3 過去8小時的數據列
4 最後一天的數據列
5 過去兩天的數據列
6 最後 100 個數據列
7 最後 500 個數據列
8 最後 1,000 個數據列
9 最後 1,000,000 個數據列

[ @update_table = ] update_table

指定在傳回結果之前,程式。 @update_table 為 int,預設值為 0

  • 0 = 不會更新資料庫的狀態。 結果只會使用最後兩個數據列來計算,其存留期取決於狀態數據表重新整理的時間。

  • 1 = 在計算結果之前呼叫 sp_dbmmonitorupdate 來更新資料庫的狀態。 不過,如果狀態數據表在前 15 秒內更新,或使用者不是 sysadmin 固定伺服器角色的成員sp_dbmmonitorresults則不會更新狀態。

傳回碼值

無。

結果集

傳回所指定資料庫所要求記錄狀態的數據列數目。 每個資料列都包含下列資訊:

資料行名稱 資料類型 描述
database_name sysname 鏡像資料庫的名稱。
role int 伺服器實例的目前鏡像角色:

1 = 主體
2 = 鏡像
mirroring_state int 資料庫狀態:

0 = Suspended
1 = 已中斷連線
2 = 同步處理
3 = 暫止故障轉移
4 = 已同步處理
witness_status int 資料庫資料庫鏡像會話中見證的連接狀態可以是:

0 = 未知
1 = Connected
2 = 已中斷連線
log_generation_rate int 自從先前以 KB/秒為單位更新此資料庫的鏡像狀態之後所產生的記錄量。
unsent_log int 主體上傳送佇列中未傳送記錄的大小,以 KB 為單位。
send_rate int 以 KB/秒將記錄從主體傳送到鏡像的速率。
unrestored_log int 鏡像上重做佇列的大小,以 KB 為單位。
recovery_rate int 以 KB/秒為單位的鏡像重做速率。
transaction_delay int 所有交易的總延遲,以毫秒為單位。
transactions_per_sec int 主體伺服器實例上每秒發生的交易數目。
average_delay int 由於資料庫鏡像,每個交易的主體伺服器實例平均延遲。 在高效能模式中(也就是當 屬性設定為 OFFSAFETY),這個值通常是 0
time_recorded datetime 資料庫鏡像監視器記錄數據列的時間。 此值是主體的系統時鐘時間。
time_behind datetime 鏡像資料庫目前已趕上主體的大約系統時鐘時間。 此值只有在主體伺服器實例上才有意義。
local_time datetime 更新此數據列時,本地伺服器實例上的系統時鐘時間。

備註

sp_dbmmonitorresults 只能在資料庫的內容 msdb 中執行。

權限

需要系統管理員固定伺服器角色或資料庫中dbm_monitor固定資料庫角色msdb的成員資格dbm_monitor角色可讓其成員檢視資料庫鏡像狀態,但無法更新它,但無法檢視或設定資料庫鏡像事件。

注意

第一次 sp_dbmmonitorupdate 執行時,它會在資料庫中建立 dbm_monitor 固定資料庫角色 msdb 。 系統管理員固定伺服器角色的成員可以將任何使用者新增至dbm_monitor固定資料庫角色。

範例

下列範例會傳回在前兩小時內記錄的數據列,而不更新資料庫的狀態。

USE msdb;
EXEC sp_dbmmonitorresults AdventureWorks2022, 2, 0;