sp_replmonitorsubscriptionpendingcmds (Transact-SQL)

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

傳回交易式發行集訂閱暫止命令數目的相關信息,以及處理這些命令所需的時間粗略估計。 此預存程式會針對每個傳回的訂用帳戶傳回一個數據列。 這個用來監視複寫的預存程式會在散發資料庫的散發者端執行。

Transact-SQL 語法慣例

語法

sp_replmonitorsubscriptionpendingcmds [ @publisher = ] 'publisher'
    , [ @publisher_db = ] 'publisher_db'
    , [ @publication = ] 'publication'
    , [ @subscriber = ] 'subscriber'
    , [ @subscriber_db = ] 'subscriber_db'
    , [ @subscription_type = ] subscription_type
    , [ @subdb_version = ] subdb_version

引數

[ @publisher = ] 'publisher'

發行者的名稱。 publishersysname,沒有預設值。

[ @publisher_db = ] 'publisher_db'

已發佈資料庫的名稱。 publisher_db為 sysname,沒有預設值。

[ @publication = ] 'publication'

發行集的名稱。 publicationsysname,沒有預設值。

[ @subscriber = ] 'subscriber'

訂閱者的名稱。 subscribersysname,沒有預設值。

[ @subscriber_db = ] 'subscriber_db'

訂閱資料庫的名稱。 subscriber_db為 sysname,沒有預設值。

[ @subscription_type = ] subscription_type

訂用帳戶的類型。 subscription_type為 int,沒有預設值,而且可以是下列其中一個值。

Description
0 發送訂閱
1 提取訂閱

[ @subdb_version = ] subdb_version

dbversion訂閱資料庫的 。 subdb_version是 int 類型的選擇性參數,預設值為 0。

結果集

資料行名稱 資料類型 描述
pendingcmdcount int 訂用帳戶擱置的命令數目。
estimatedprocesstime int 估計將所有暫止命令傳遞至訂閱者所需的秒數。

傳回碼值

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

備註

sp_replmonitorsubscriptionpendingcmds 與事務複製搭配使用。

在 SQL Server 2019 (15.x) CU17 之前, sp_replmonitorsubscriptionpendingcmds 不支援對等複寫,並在用來查詢點對點復寫拓撲時傳回不正確的暫止命令數目。 在 SQL Server 2019 (15.x) CU 17 中,已新增支援以與 sp_replmonitorsubscriptionpendingcmds 點對點發行集相容。

不過,即使 SQL Server 2019 (15.x) CU17 或更新版本,如果數據表MSrepl_originators包含訂閱資料庫的過時專案,則當與點對點復寫搭配使用時,sp_replmonitorsubscriptionpendingcmds可能會報告不正確的暫止命令數目。 若要更正問題,請從 MSrepl_originators 中刪除所有過時的專案,或使用預存程式的 自變數sp_replmonitorsubscriptionpendingcmdssubdb_version傳遞訂閱資料庫的正確dbversion

如需如何判斷 dbversion的詳細資訊,請參閱KB5017009

權限

只有散發資料庫中db_owner固定資料庫角色之散發者或db_owner固定資料庫角色之 sysadmin 固定伺服器角色的成員才能執行 sp_replmonitorsubscriptionpendingcmds。 使用散發資料庫之發行集的發行集存取清單成員可以執行 sp_replmonitorsubscriptionpendingcmds ,以傳回該發行集的暫止命令。