sp_replmonitorhelpsubscription (Transact-SQL)

适用于: SQL Server Azure SQL 托管实例

返回发布服务器上属于一个或多个发布的订阅的当前状态信息,并为每个返回的订阅返回一行。 在分发服务器的分发数据库上执行此存储过程,用于监视复制。

Transact-SQL 语法约定

语法

sp_replmonitorhelpsubscription
    [ [ @publisher = ] N'publisher' ]
    [ , [ @publisher_db = ] N'publisher_db' ]
    [ , [ @publication = ] N'publication' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @mode = ] mode ]
    [ , [ @topnum = ] topnum ]
    [ , [ @exclude_anonymous = ] exclude_anonymous ]
    [ , [ @refreshpolicy = ] refreshpolicy ]
[ ; ]

参数

[ @publisher = ] N'publisher'

正在监视其状态的发布服务器的名称。 @publisher为 sysname,默认值为 NULL. 如果 为 null,则会为使用分发服务器的所有发布服务器返回信息。

[ @publisher_db = ] N'publisher_db'

已发布的数据库的名称。 @publisher_db为 sysname,默认值为 NULL. 如果 NULL,则为发布服务器上的所有已发布数据库返回信息。

[ @publication = ] N'publication'

要监视的发布的名称。 @publication为 sysname,默认值为 NULL.

[ @publication_type = ] publication_type

发布的类型。 @publication_typeint,可以是以下值之一。

说明
0 事务发布。
1 快照发布。
2 合并发布。
NULL(默认值) 由复制来确定发布类型。

[ @mode = ] 模式

返回订阅监视信息时要使用的筛选模式。 @mode为 int,可以是这些值之一。

说明
0(默认值) 返回所有订阅。
1 只返回带错误的订阅。
2 仅返回生成阈值指标警告的订阅。
3 仅返回错误或生成阈值指标警告的订阅。
4 返回表现最差的前 25 个订阅。
5 返回执行情况最差的 50 个订阅。
6 只返回当前同步的订阅。
7 仅返回当前未同步的订阅。

[ @topnum = ] topnum

将结果集限制为返回数据顶部的指定订阅编号。 @topnum为 int,默认值为 NULL.

[ @exclude_anonymous = ] exclude_anonymous

如果从结果集中排除匿名拉取订阅。 @exclude_anonymous,默认值为 0.

  • 一个值 1 意味着排除匿名订阅。
  • 0一个值,表示它们已包含。

[ @refreshpolicy = ] refreshpolicy

标识为仅供参考。 不支持。 不保证以后的兼容性。

结果集

列名称 数据类型 描述
status int 检查与该发布关联的所有复制代理的状态,并返回按以下顺序找到的最高级状态:

6 = 失败
5 = 重试
2 = 已停止
4 = 空闲
3 = 正在进行中
1 = Started
warning int 由属于该发布的订阅所生成的最大阈值警告,可以是下列一个或多个值进行逻辑或运算的结果。

1 = expiration - 事务发布的订阅未在保留期阈值内同步。
2 = latency - 将数据从事务发布服务器复制到订阅服务器所花费的时间超过阈值(以秒为单位)。
4 = mergeexpiration - 合并发布的订阅未在保留期阈值内同步。
8 = mergefastrunduration - 完成合并订阅同步所需的时间超过了通过快速网络连接的阈值(以秒为单位)。
16 = mergeslowrunduration - 完成合并订阅同步所花费的时间超过了网络连接缓慢的阈值(以秒为单位)。
32 = mergefastrunspeed - 合并订阅同步期间行的传递速率未能通过快速网络连接保持阈值速率(以每秒行为单位)。
64 = mergeslowrunspeed - 合并订阅同步期间行的传递速率未能通过网络连接缓慢保持阈值速率(以每秒行为单位)。
subscriber sysname 订阅服务器的名称。
subscriber_db sysname 用于订阅的数据库的名称。
publisher_db sysname 发布数据库的名称。
publication 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 订阅上次同步的传递速率。
mergerunduration 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 用于所有类型的复制。

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

权限

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