共用方式為


sp_dbmmonitorresults (Transact-SQL)

從儲存資料庫鏡像監視記錄的狀態資料表傳回受監視資料庫的狀態資料列,並讓您選擇此程序是否要事前取得最新的狀態。

主題連結圖示Transact-SQL 語法慣例

語法

sp_dbmmonitorresults database_name 
      , rows_to_return
        , update_status 

引數

  • database_name
    指定要傳回其鏡像狀態的資料庫。

  • rows_to_return
    指定傳回的資料列數量:

    0 = 最後一個資料列

    1 = 最後兩個小時的資料列

    2 = 最後四個小時的資料列

    3 = 最後八個小時的資料列

    4 = 最後一天的資料列

    5 = 最後兩天的資料列

    6 = 最後 100 個資料列

    7 = 最後 500 個資料列

    8 = 最後 1,000 個資料列

    9 = 最後 1,000,000 個資料列

  • update_status
    指定傳回結果之前,程序:

    0 = 不要更新資料庫的狀態。只會使用最後兩個資料列來計算結果,而資料列的存在時間是依狀態資料表於何時重新整理而定。

    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

從主體到鏡像的記錄傳送速率 (以 KB/秒為單位)。

unrestored_log

int

鏡像上的重做佇列大小 (以 KB 為單位)。

recovery_rate

int

鏡像上的重做速率 (以 KB/秒為單位)。

transaction_delay

int

所有交易的總延遲時間 (以毫秒為單位)。

transactions_per_sec

int

主體伺服器執行個體上每秒發生的交易數。

average_delay

int

由於資料庫鏡像而在主體伺服器執行個體上造成的每個交易平均延遲。在高效能模式中 (也就是當 SAFETY 屬性設定為 OFF 時),這個值通常是 0。

time_recorded

datetime

當資料庫鏡像監視器記錄資料列時的時間。這是主體的系統時間。

time_behind

datetime

鏡像資料庫目前所跟上之主體的近似系統時間。這個值只有在主體伺服器執行個體上才有意義。

local_time

datetime

更新這個資料列時本機伺服器執行個體上的系統時間。

備註

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

權限

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

[!附註]

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

範例

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

USE msdb;
EXEC sp_dbmmonitorresults AdventureWorks, 2, 0;