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 返回订阅监视信息时要使用的筛选模式。 模式int,可以是以下值之一。

说明
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 = 已启动
警告 int 由属于该发布的订阅所生成的最大阈值警告,可以是下列一个或多个值进行逻辑或运算的结果。

1 = 过期 - 在保留期阈值内尚未同步事务发布的订阅。

2 = 延迟 - 将事务发布服务器中的数据副本 (replica)到订阅服务器所花费的时间超过阈值(以秒为单位)。

4 = mergeexpiration - 合并发布的订阅未在保留期阈值内同步。

8 = mergefastrunduration - 完成合并订阅同步所需的时间超过了通过快速网络连接的阈值(以秒为单位)。

16 = mergeslowrunduration - 完成合并订阅同步所需的时间超过阈值(以秒为单位)超过慢速或拨号网络连接。

32 = mergefastrunspeed - 合并订阅同步期间行的传递率未能通过快速网络连接保持阈值速率(以每秒行为单位)。

64 = mergeslowrunspeed - 合并订阅同步期间行的传递率未能通过慢速或拨号网络连接保持阈值速率(以每秒行为单位)。
subscriber sysname 订阅服务器的名称。
subscriber_db sysname 用于订阅的数据库的名称。
publisher_db sysname 发布数据库的名称。
出版 sysname 发布的名称。
publication_type int 发布的类型,可以是下列值之一:

0 = 事务发布

1 = 快照发布

2 = 合并发布
subtype int 订阅类型,可以是下列值之一:

0 = 推送

1 = 拉取

2 = 匿名
latency 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 将订阅同步到合并发布时使用的连接,可以是下列值之一:

1 = 局域网 (LAN)

2 = 拨号网络连接

3 = Web 同步。
mergePerformance int 订阅的上次同步相对于其所有同步而言的性能,用上次同步的传递速率除以之前所有传递速率的平均值。
mergerunspeed float 订阅的上次同步的传递速率。
合并 int 完成订阅的上次同步的时间长度。
monitorranking int 用于对结果集中的订阅进行排序的排名值,可以是下列值之一:

对于事务发布:

60 = 错误

56 = 警告:性能严重

52 = 警告:即将过期或已过期

50 = 警告:订阅未初始化

40 = 重试失败命令

30 = 未运行(成功)

20 = 正在运行(正在启动、正在运行或空闲)

对于合并发布:

60 = 错误

56 = 警告:性能严重

54 = 警告:长时间运行的合并

52 = 警告:即将过期

50 = 警告:订阅未初始化

40 = 重试失败命令

30 = 正在运行(正在启动、运行或空闲)

20 = 未运行(成功)
distributionagentjobid binary(16) 事务发布订阅的分发代理作业的 ID。
mergeagentjobid binary(16) 合并发布订阅的合并代理作业的 ID。
distributionagentid int 订阅的分发代理作业的 ID。
distributionagentprofileid int 分发代理使用的代理配置文件的 ID。
mergeagentid int 订阅的合并代理作业的 ID。
mergeagentprofileid int 合并代理使用的代理配置文件的 ID。

返回代码值

0 (成功) 或 1 (失败)

备注

sp_replmonitorhelpsubscription用于所有类型的副本 (replica)。

sp_replmonitorhelpsubscription根据订阅状态的严重性对结果集进行排序,该状态由监视值确定。 例如,处于错误状态的所有订阅的各行排在处于警告状态的订阅的各行之上。

权限

只有分发数据库上的 db_ownerreplmonitor 固定数据库角色的成员才能执行 sp_replmonitorhelpsubscription

另请参阅

以编程方式监视复制