sp_replmonitorhelpsubscription (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'
正监视其状态的发布服务器的名称。publisher 的数据类型为 sysname,默认值为 NULL。 如果为 null,则返回使用分发服务器的所有发布服务器的信息。[ @publisher_db = ] 'publisher_db'
发布的数据库的名称。publisher_db 的数据类型为 sysname,默认值为 NULL。 如果为 NULL,则返回发布服务器上所有已发布数据库的信息。[ @publication= ] 'publication'
受监视的发布的名称。publication 的数据类型为 sysname,默认值为 NULL。[ @publication_type = ] publication_type
发布的类型。publication_type 的数据类型为 int,可以为下列值之一:值
说明
0
事务发布。
1
快照发布。
2
合并发布。
NULL(默认值)
由复制来确定发布类型。
[ @mode = ] mode
返回订阅监视信息时所使用的筛选模式。mode 的数据类型为 int,可以是下列值之一。值
说明
0(默认值)
返回所有订阅。
1
只返回带错误的订阅。
2
只返回已生成在达到阈值度量指标时发出的警告的订阅。
3
只返回带错误或已生成在达到阈值度量指标时发出的警告的订阅。
4
返回执行情况最差的 25 个订阅。
5
返回执行情况最差的 50 个订阅。
6
只返回当前同步的订阅。
7
只返回当前不同步的订阅。
[ @topnum = ] topnum
将结果集限制为返回数据顶部的指定订阅编号。topnum 的数据类型为 int,无默认值。[ @exclude_anonymous = ] exclude_anonymous
指示是否从结果集中排除匿名请求订阅。exclude_anonymous 的数据类型为 bit,默认值为 0;值为 1 时表示排除匿名订阅,值为 0 时表示包括匿名订阅。[ @refreshpolicy= ] refreshpolicy
仅供内部使用。
结果集
列名 |
数据类型 |
说明 |
---|---|---|
status |
int |
与发布关联的所有复制代理的最大值状态,可以是下列值之一: 1= 已开始 2 = 成功 3= 正在进行 4 = 空闲 5= 正在重试 6= 失败 |
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。