sp_replmonitorsubscriptionpendingcmds (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'
发布服务器的名称。 publisher 为 sysname,没有默认值。
[ @publisher_db = ] 'publisher_db'
已发布的数据库的名称。 publisher_db为 sysname,无默认值。
[ @publication = ] 'publication'
发布的名称。 publication 为 sysname,无默认值。
[ @subscriber = ] 'subscriber'
订阅服务器的名称。 订阅服务器 为 sysname,无默认值。
[ @subscriber_db = ] 'subscriber_db'
订阅数据库的名称。 subscriber_db 为 sysname,无默认值。
[ @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
用于事务复制。
在 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
中删除所有过时条目,或者在为存储过程使用subdb_version
参数sp_replmonitorsubscriptionpendingcmds
时传递订阅数据库的正确dbversion
项。
有关如何确定dbversion
的详细信息,请参阅KB5017009。
权限
只有分发服务器上的 sysadmin 固定服务器角色的成员或分发数据库中db_owner固定数据库角色的成员才能执行sp_replmonitorsubscriptionpendingcmds
。 使用分发数据库的发布的发布访问列表的成员可以执行 sp_replmonitorsubscriptionpendingcmds
该发布以返回该发布的挂起命令。