分享方式:


sp_replmonitorhelpsubscription (Transact-SQL)

適用於:SQL Server Azure SQL 受控執行個體

針對屬於發行者端一或多個發行集的訂閱,傳回目前的狀態資訊,並針對每個傳回的訂閱傳回一個數據列。 這個用來監視複寫的預存程式會在散發資料庫的散發者端執行。

Transact-SQL 語法慣例

語法

sp_replmonitorhelpsubscription
    [ [ @publisher = ] N'publisher' ]
    [ , [ @publisher_db = ] N'publisher_db' ]
    [ , [ @publication = ] N'publication' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @mode = ] mode ]
    [ , [ @topnum = ] topnum ]
    [ , [ @exclude_anonymous = ] exclude_anonymous ]
    [ , [ @refreshpolicy = ] refreshpolicy ]
[ ; ]

引數

[ @publisher = ] N'publisher'

正在監視其狀態的發行者名稱。 @publisher為 sysname,預設值為 NULL。 如果 為 null,則會傳回所有使用散發者之發行者的資訊。

[ @publisher_db = ] N'publisher_db'

已發佈資料庫的名稱。 @publisher_db為 sysname,預設值為 NULL。 如果 NULL為 ,則會傳回發行者端所有已發行資料庫的資訊。

[ @publication = ] N'publication'

要監視的發行集名稱。 @publication為 sysname,預設值為 NULL

[ @publication_type = ] publication_type

如果發行集的類型。 @publication_type為 int,而且可以是下列其中一個值。

Description
0 交易式發行集。
1 快照式發行集。
2 合併式發行集。
NULL (預設值) 複寫會嘗試判斷發行集類型。

[ @mode = ] 模式

傳回訂閱監視資訊時要使用的篩選模式。 @mode為 int,而且可以是下列其中一個值。

Description
0 (預設值) 傳回所有訂用帳戶。
1 只傳回發生錯誤的訂用帳戶。
2 只傳回產生臨界值計量警告的訂用帳戶。
3 只傳回有錯誤的訂用帳戶,或產生臨界值計量警告。
4 傳回表現最差的前 25 個訂用帳戶。
5 傳回表現最差的前 50 個訂用帳戶。
6 只傳回目前正在同步處理的訂用帳戶。
7 只傳回目前未同步處理的訂用帳戶。

[ @topnum = ] topnum

將結果集限制為傳回數據頂端的指定訂用帳戶數目。 @topnum為 int,預設值為 NULL

[ @exclude_anonymous = ] exclude_anonymous

如果匿名提取訂閱已從結果集排除。 @exclude_anonymous為 bit,預設值為 0

  • 的值 1 表示會排除匿名訂閱。
  • 的值 0 表示它們已包含在內。

[ @refreshpolicy = ] refreshpolicy

僅供參考之用。 不支援。 我們無法保證未來的相容性。

結果集

資料行名稱 資料類型 描述
status int 檢查與發行集相關聯之所有復寫代理程序的狀態,並傳回下列順序中找到的最高狀態:

6 = 失敗
5 = 重試
2 = 已停止
4 = 閑置
3 = 進行中
1 = 已啟動
warning int 屬於發行集的訂閱所產生的臨界值警告上限,可以是其中一或多個值的邏輯 OR 結果。

1 = expiration - 交易式發行集的訂閱未在保留期間閾值內同步處理。
2 = latency - 將數據從交易式發行者復寫到訂閱者所花費的時間超過臨界值,以秒為單位。
4 = mergeexpiration - 合併式發行集的訂閱未在保留期間閾值內同步處理。
8 = mergefastrunduration - 完成合併訂閱同步處理所花費的時間超過快速網路連線的閾值,以秒為單位。
16 = mergeslowrunduration - 完成合併訂閱同步處理所花費的時間超過速度緩慢的網路連線,以秒為單位。
32 = mergefastrunspeed - 合併訂閱同步處理期間數據列的傳遞速率無法透過快速網路連線,以每秒數據列為單位來維持臨界值速率。
64 = mergeslowrunspeed - 合併訂閱同步處理期間數據列的傳遞速率無法透過緩慢的網路連線,以每秒數據列為單位來維持臨界值速率。
subscriber sysname 訂閱者的名稱。
subscriber_db sysname 用於訂閱的資料庫名稱。
publisher_db sysname 發行集資料庫的名稱。
publication sysname 發行集的名稱。
publication_type int 發行集的類型,可以是下列其中一個值:

0 = 交易式發行集
1 = 快照式發行集
2 = 合併式發行集
subtype int 訂用帳戶類型,可以是下列其中一個值:

0 = 推送
1 = 提取
2 = 匿名
latency int 記錄讀取器或交易式發行集 散發代理程式 所傳播的數據變更,以秒為單位的最高延遲。
latencythreshold int 交易式發行集的最大延遲,上面會引發警告。
agentnotrunning int 代理程式未執行的時間長度,以小時為單位。
agentnotrunningthreshold int 代理程式在引發警告之前未執行的時間長度,以小時為單位。
timetoexpiration int 如果訂閱未同步,則會在訂閱到期前以小時為單位的時間長度。
expirationthreshold int 訂用帳戶到期前的時間會引發警告。
last_distsync datetime 上次執行 散發代理程式 的日期時間。
distribution_agentname sysname 交易式發行集訂閱之 散發代理程式 作業的名稱。
mergeagentname sysname 合併式發行集之訂閱的 合併代理程式 作業名稱。
mergesubscriptionfriendlyname sysname 提供給訂用帳戶的易記名稱。
mergeagentlocation sysname 執行 合併代理程式 的伺服器名稱。
mergeconnectiontype int 將訂閱同步處理至合併式發行集時所使用的連接,可以是下列其中一個值:

1 = 區域網路 (LAN)
2 = 撥號網路連線
3 = Web 同步處理。
mergePerformance int 相較於訂用帳戶的所有同步處理,上次同步處理的效能取決於上次同步處理的傳遞率除以所有先前傳遞率的平均值。
mergerunspeed float 訂閱上一次同步處理的傳遞率。
mergerunduration int 完成訂閱最後一次同步處理的時間長度。
monitorranking int 用來排序結果集中訂閱的排名值,可以是下列其中一個值:

對於交易式發行集:

60 = 錯誤
56 = 警告:效能關鍵
52 = 警告:即將到期或已過期
50 = 警告:未初始化的訂用帳戶
40 = 重試失敗的命令
30 = 未執行 (成功)
20 = 執行或閒置 ( 啟動、 執行或閒置 )

針對合併式發行集:

60 = 錯誤
56 = 警告:效能關鍵
54 = 警告:長時間執行的合併
52 = 警告:即將到期
50 = 警告:未初始化的訂用帳戶
40 = 重試失敗的命令
30 = 執行或閒置 ( 啟動、 執行或閒置 )
20 = 未執行 (成功)
distributionagentjobid 二進位(16) 交易式發行集訂閱之 散發代理程式 作業的標識碼。
mergeagentjobid 二進位(16) 合併式發行集訂閱之 合併代理程式 作業的標識碼。
distributionagentid int 訂用帳戶 散發代理程式 作業的標識碼。
distributionagentprofileid int 散發代理程式 所使用的代理程式設定檔標識碼。
mergeagentid int 訂用帳戶 合併代理程式 作業的標識碼。
mergeagentprofileid int 合併代理程式 所使用的代理程式設定檔標識碼。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

sp_replmonitorhelpsubscription 會與所有類型的復寫搭配使用。

sp_replmonitorhelpsubscription 會根據訂用帳戶狀態的嚴重性來排序結果集,這個嚴重性是由的值 monitorranking所決定。 例如,所有處於錯誤狀態之訂用帳戶的數據列都會排序在警告狀態的訂用帳戶的上方數據列。

權限

只有散發資料庫上db_owner或 replmonitor 固定資料庫角色的成員才能執行 sp_replmonitorhelpsubscription