sp_replmonitorhelpsubscription (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

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

Transact-SQL 語法慣例

語法

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

引數

[ @publisher = ] 'publisher' 這是要監視其狀態的發行者名稱。 publishersysname,預設值為 NULL。 如果 為 null,則會傳回所有使用散發者之發行者的資訊。

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

[ @publication = ] 'publication' 這是所監視的發行集名稱。 publicationsysname,預設值為 NULL。

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

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

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

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

[ @topnum = ] topnum 將結果集限制為傳回數據頂端的指定訂用帳戶數目。 topnumint,沒有預設值。

[ @exclude_anonymous = ] exclude_anonymous 如果結果集中排除匿名提取訂閱,則為 。 exclude_anonymous為位,預設值為 0;值為 1 表示排除匿名訂閱,值為 0 表示包含這些訂閱。

[ @refreshpolicy = ] refreshpolicy 僅限內部使用。

結果集

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

6 = 失敗

5 = 重試

2 = 已停止

4 = 閑置

3 = 進行中

1 = 已啟動
warning int 屬於發行集的訂閱所產生的臨界值警告上限,可以是其中一或多個值的邏輯 OR 結果。

1 = 到期 - 交易式發行集的訂閱尚未在保留期間閾值內同步處理。

2 = 延遲 - 將數據從交易式發行者複寫到訂閱者所花費的時間超過臨界值,以秒為單位。

4 = mergeexpiration - 合併式發行集的訂閱尚未在保留期間閾值內同步處理。

8 = mergefastrunduration - 完成合併訂閱同步處理所花費的時間超過透過快速網路連線的臨界值。

16 = mergeslowrunduration - 完成合併訂閱同步處理所花費的時間超過臨界值,以秒為單位,超過緩慢或撥號網路連線。

32 = mergefastrunspeed - 合併訂閱同步處理期間數據列的傳遞速率無法透過快速網路連線維持每秒數據列的閾值速率。

64 = mergeslowrunspeed - 合併訂閱同步處理期間數據列的傳遞速率無法維持每秒數據列的閾值速率,因為速度緩慢或撥號網路連線。
訂閱者 sysname 這是訂閱者的名稱。
subscriber_db sysname 這是用於訂閱的資料庫名稱。
publisher_db sysname 這是發行集資料庫的名稱。
出版 sysname 這是發行集的名稱。
publication_type int 這是發行集的類型,可以是下列其中一個值:

0 = 交易式發行集

1 = 快照式發行集

2 = 合併式發行集
int 這是訂用帳戶類型,可以是下列其中一個值:

0 = 推送

1 = 提取

2 = 匿名
延遲 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 將訂閱同步處理至合併式發行集時所使用的 連線 ion,可以是下列其中一個值:

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會根據訂閱狀態的嚴重性來排序結果集,此嚴重性是由監視值所決定。 例如,所有處於錯誤狀態之訂用帳戶的數據列都會排序在警告狀態的訂用帳戶的上方數據列。

權限

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

另請參閱

以程式設計方式監視複寫