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'

订阅服务器的名称。 订阅服务器sysname,无默认值。

[ @subscriber_db = ] 'subscriber_db'

订阅数据库的名称。 subscriber_dbsysname,无默认值。

[ @subscription_type = ] subscription_type

订阅的类型。 subscription_type为 int,没有默认值,可以是这些值之一。

说明
0 推送订阅
1 请求订阅

[ @subdb_version = ] subdb_version

dbversion订阅数据库。 subdb_version是 int 类型的可选参数,默认值为 0。

结果集

列名称 数据类型 说明
pendingcmdcount int 等待订阅的命令数。
estimatedprocesstime int 估计将所有挂起的命令传递到订阅服务器所需的秒数。

返回代码值

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

注解

sp_replmonitorsubscriptionpendingcmds用于事务副本 (replica)。

在 SQL Server 2019 (15.x) CU17 之前,sp_replmonitorsubscriptionpendingcmds对等副本 (replica)不支持,在用于查询对等副本 (replica)tion 拓扑时返回了错误的挂起命令数。 在 SQL Server 2019 (15.x) CU 17 中,添加了 sp_replmonitorsubscriptionpendingcmds 与对等发布兼容的支持。

但是,即使使用 SQL Server 2019 (15.x) CU17 或更高版本,如果表MSrepl_originators包含订阅数据库的过时条目,则当与对等副本 (replica)一起使用时,sp_replmonitorsubscriptionpendingcmds也可能报告不正确的挂起命令数。 若要更正此问题,请从MSrepl_originators中删除所有过时条目,或者在为存储过程使用subdb_version参数sp_replmonitorsubscriptionpendingcmds时传递订阅数据库的正确dbversion项。

有关如何确定dbversion的详细信息,请参阅知识库(KB)5017009

权限

只有分发服务器上的 sysadmin 固定服务器角色的成员或分发数据库中db_owner固定数据库角色的成员才能执行sp_replmonitorsubscriptionpendingcmds 使用分发数据库的发布的发布访问列表的成员可以执行 sp_replmonitorsubscriptionpendingcmds 该发布以返回该发布的挂起命令。