Upravit

Sdílet prostřednictvím


sp_replmonitorsubscriptionpendingcmds (Transact-SQL)

Applies to: SQL Server Azure SQL Managed Instance

Returns information on the number of pending commands for a subscription to a transactional publication and a rough estimate of how much time it takes to process them. This stored procedure returns one row for each returned subscription. This stored procedure, which is used to monitor replication, is executed at the Distributor on the distribution database.

Transact-SQL syntax conventions

Syntax

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

Arguments

[ @publisher = ] 'publisher'

The name of the Publisher. publisher is sysname, with no default.

[ @publisher_db = ] 'publisher_db'

The name of the published database. publisher_db is sysname, with no default.

[ @publication = ] 'publication'

The name of the publication. publication is sysname, with no default.

[ @subscriber = ] 'subscriber'

The name of the Subscriber. subscriber is sysname, with no default.

[ @subscriber_db = ] 'subscriber_db'

The name of the subscription database. subscriber_db is sysname, with no default.

[ @subscription_type = ] subscription_type

The type of subscription. subscription_type is int, with no default and can be one of these values.

Value Description
0 Push subscription
1 Pull subscription

[ @subdb_version = ] subdb_version

The dbversion of the subscription database. subdb_version is an optional parameter of type int, with a default value of 0.

Result set

Column name Data type Description
pendingcmdcount int The number of commands that are pending for the subscription.
estimatedprocesstime int Estimate of the number of seconds required to deliver all of the pending commands to the subscriber.

Return code values

0 (success) or 1 (failure).

Remarks

sp_replmonitorsubscriptionpendingcmds is used with transactional replication.

Prior to SQL Server 2019 (15.x) CU17, sp_replmonitorsubscriptionpendingcmds wasn't supported with peer-to-peer replication, and returned an incorrect number of pending commands when used to query peer-to-peer replication topology. In SQL Server 2019 (15.x) CU 17, support was added to make sp_replmonitorsubscriptionpendingcmds compatible with peer-to-peer publications.

However, even with SQL Server 2019 (15.x) CU17 or later, sp_replmonitorsubscriptionpendingcmds could report an incorrect number of pending commands when used with peer-to-peer replication if the table MSrepl_originators contains a stale entry of an incorrect version of the subscription database. To correct the problem, either delete all the stale entries from MSrepl_originators or pass the correct dbversion of the subscription database when using the subdb_version argument for the sp_replmonitorsubscriptionpendingcmds stored procedure.

See KB5017009 for details on how to determine dbversion.

Permissions

Only members of the sysadmin fixed server role at the Distributor or members of the db_owner fixed database role in the distribution database can execute sp_replmonitorsubscriptionpendingcmds. Members of the publication access list for a publication that uses the distribution database can execute sp_replmonitorsubscriptionpendingcmds to return pending commands for that publication.