复制监视器是一种图形工具,可用于监视复制拓扑。 可以使用 Transact-SQL 复制存储过程或复制管理对象(RMO)以编程方式访问相同的监视数据。 通过这些对象可以编程以下任务:
监视发布者、出版物和订阅的状态。
在一个或多个订阅服务器上监视合并代理会话。
监视在一个或多个订阅服务器上待处理的事务指令。
定义用于确定发布何时需要干预的阈值指标。
监视跟踪令牌的状态。
本主题内容:
Transact-SQL
从发行者监视发布者、出版物和订阅
在分发数据库的分发服务器上,执行 sp_replmonitorhelppublisher。 这会返回使用此分发服务器的所有发布服务器的监视信息。 若要将结果集限制为单个发布服务器,请指定 @publisher。
在分发服务器上的分发服务器上,执行 sp_replmonitorhelppublication。 这将返回所有使用此分发器的发布的监控信息。 若要将结果集限制为单个发布者、发布或发布的数据库,请分别指定 @publisher、@publication 或 @publisher_db。
在分发服务器上的分发服务器上,执行 sp_replmonitorhelpsubscription。 这会返回使用此分发服务器的所有订阅的监视信息。 若要将结果集限制为属于单个发布服务器、发布或已发布数据库的订阅,请分别指定 @publisher、 @publication或 @publisher_db。
监控等待在订阅者处应用的事务指令
- 在分发服务器上的分发服务器上,执行 sp_replmonitorsubscriptionpendingcmds。 这将返回有关使用此分发代理挂起的所有订阅的所有命令的监视信息。 若要将结果集限制为属于单个发布服务器、订阅服务器、发布或已发布数据库的订阅挂起的命令,请分别指定 @publisher、 @subscriber、 @publication或 @publisher_db。
跟踪等待上传或下载的合并更改
在发布服务器上,对发布数据库执行 sp_showpendingchanges。 这会返回一个结果集,其中显示了有关正在等待复制到订阅服务器的更改的信息。 若要将结果集限制为属于单个发布或项目更改,请分别指定 @publication 或 @article。
在订阅数据库的订阅者上,执行 sp_showpendingchanges。 这会返回一个结果集,其中显示了等待复制到发布服务器的更改的相关信息。 若要将结果集限制为属于单个发布或项目更改,请分别指定 @publication 或 @article。
监视合并代理会话
在分发数据库的分发服务器上,执行 sp_replmonitorhelpmergesession。 这会返回使用此分发服务器的所有订阅的所有合并代理会话(包括 Session_id)的监视信息。 还可以通过查询 MSmerge_sessions 系统表来获取 Session_id 。
在分发服务器上的分发服务器上,执行 sp_replmonitorhelpmergesessiondetail。 为 @session_id 指定步骤 1 的 Session_id值。 这会显示有关会话的详细监视器信息。
对每个感兴趣的会话重复步骤二。
监视从订阅服务器请求订阅的合并代理会话
在订阅服务器上的订阅服务器上,执行 sp_replmonitorhelpmergesession。 对于给定的订阅,请为@publisher_db指定@publisher、@publication和发布数据库的名称。 这会返回此订阅的最后五个合并代理会话的监视信息。 请注意在结果集中关注的会话的 Session_id 值。
在订阅服务器上的订阅服务器上,执行 sp_replmonitorhelpmergesessiondetail。 为 @session_id 指定步骤 1 的 Session_id值。 这会显示有关会话的详细监视信息。
为每个你感兴趣的会话重复步骤 2。
查看和修改发布的监视器阈值指标
在分发服务器上,对分发数据库执行 sp_replmonitorhelppublicationthresholds。 这会返回使用此发布服务器为所有出版物设置的监控阈值。 若要将结果集限制为监视属于单个发布服务器或已发布数据库或单个发布的发布的阈值,请分别指定 @publisher、 @publisher_db或 @publication。 请注意必须更改的任何阈值的 Metric_id 值。 有关详细信息,请参阅 复制监视器中的设置阈值和警告。
在分发服务器上,对分发数据库执行 sp_replmonitorchangepublicationthreshold。 根据需要指定以下内容:
在步骤 1 中为@metric_id获取的Metric_id值。
@value的监视器阈值指标的新值。
如果达到此阈值时需要记录警报,则@shouldalert值为1;如果不需要警报,则该值为0。
@mode的值为1时,用于启用焦点阈值指标;值为2时则禁用它。
复制管理对象 (RMO)
在订阅服务器上监视合并发布的订阅
使用 ServerConnection 类创建与订阅服务器的连接。
创建MergeSubscriberMonitor类的实例,为订阅设置Publisher、Publication、PublisherDB 和SubscriberDB 属性,并将ConnectionContext属性设置为在步骤 1 中创建的ServerConnection。
调用以下方法之一以返回有关此订阅的合并代理会话的信息:
GetSessionsSummary - 返回一个对象数组 MergeSessionSummary ,其中包含最近五个合并代理会话的相关信息。 记下 SessionId 任何感兴趣的会话的值。
GetSessionsSummary - 返回一个包含 MergeSessionSummary 对象的数组,这些对象提供了在过去由 小时 参数指定的小时数内发生的合并代理会话的信息(最多返回最近五个会话)。 请记下任何您感兴趣的会话的SessionId值。
GetLastSessionSummary - 返回一个对象,其中包含上一个 MergeSessionSummary 合并代理会话的信息。 记下 SessionId 此会话的值。
GetSessionsSummaryDataSet - 返回一个对象,其中包含最多最后五个 DataSet 合并代理会话的信息,每行一个。 请注意任何感兴趣的会话中的 Session_id 列的值。
GetLastSessionSummaryDataRow - 返回一个对象,其中包含上一个 DataRow 合并代理会话的信息。 请注意此会话的 Session_id 列的值。
(可选)调用RefreshSessionSummary以刷新作为 mss 传递的对象的数据MergeSessionSummary,或调用RefreshSessionSummary以刷新作为 drRefresh 传递的对象中的数据DataRow。
使用步骤 3 中获取的会话 ID,调用以下方法之一以返回有关特定会话的详细信息的信息:
GetSessionDetails- 返回提供的 sessionID 的对象数组MergeSessionDetail。
GetSessionDetailsDataSet - 返回一个 DataSet 对象,其中包含指定 sessionID 的信息。
在分发服务器上监控所有发布的复制属性
使用 ServerConnection 类创建与分发服务器的连接。
创建 ReplicationMonitor 类的一个实例。
将 ConnectionContext 属性设置为 ServerConnection 在步骤 1 中创建的属性。
调用 LoadProperties 方法获取该对象的属性。
执行以下一个或多个方法,以返回使用此分发服务器的所有发布服务器的复制信息。
EnumDistributionAgents - 返回一个 DataSet 对象,该对象包含有关此分发服务器上所有分发代理的信息。
EnumErrorRecords - 返回一个 DataSet 对象,该对象包含有关存储在分发服务器上的错误的信息。
EnumLogReaderAgents - 返回一个 DataSet 对象,该对象包含有关分发服务器上所有日志读取器代理的信息。
EnumMergeAgents - 返回一个 DataSet 对象,该对象包含有关分发服务器上所有合并代理的信息。
EnumMiscellaneousAgents - 返回一个 DataSet 对象,该对象包含有关分发服务器上所有其他复制代理的信息。
EnumPublishers - 返回一个 DataSet 对象,该对象包含有关此分发服务器上的所有发布服务器的信息。
EnumPublishers2 - 返回一个 DataSet 对象,该对象返回使用此分发服务器的发布服务器。
EnumQueueReaderAgents - 返回一个 DataSet 对象,该对象包含有关分发服务器上所有队列读取器代理的信息。
EnumQueueReaderAgentSessionDetails - 返回一个 DataSet 对象,该对象包含有关指定队列读取器代理和会话的详细信息。
EnumQueueReaderAgentSessions - 返回一个 DataSet 对象,该对象包含有关指定队列读取器代理的会话信息。
EnumSnapshotAgents - 返回一个 DataSet 对象,该对象包含有关分发服务器上所有快照代理的信息。
监视分发者上特定发布者的发布属性
使用 ServerConnection 类创建与分发服务器的连接。
通过以下方法之一 PublisherMonitor 获取对象。
创建 PublisherMonitor 类的一个实例。 将Name属性设置为发布者,并将ConnectionContext属性设置为步骤 1 中创建的ServerConnection。 调用 LoadProperties 方法获取该对象的属性。 如果此方法返回
false
,则发布服务器名称定义不正确或发布不存在。使用现有ReplicationMonitor对象的PublisherMonitors属性来访问PublisherMonitorCollection。
执行以下一个或多个方法,以返回属于此发布服务器的所有发布的复制信息。
EnumDistributionAgentSessionDetails - 返回一个 DataSet 对象,该对象包含有关指定分发代理和会话的详细信息。
EnumDistributionAgentSessions - 返回一个 DataSet 对象,该对象包含有关指定分发代理的会话信息。
EnumErrorRecords - 返回一个 DataSet 对象,该对象包含有关指定错误的错误记录信息。
EnumLogReaderAgentSessionDetails - 返回一个 DataSet 对象,该对象包含指定日志读取器代理和会话的详细信息。
EnumLogReaderAgentSessions - 返回一个 DataSet 对象,该对象包含指定日志读取器代理的会话信息。
EnumMergeAgentSessionDetails - 返回一个 DataSet 对象,该对象包含有关指定合并代理和会话的详细信息。
EnumMergeAgentSessionDetails2 - 返回一个 DataSet 对象,该对象包含有关指定合并代理和会话的其他详细信息。
EnumMergeAgentSessions - 返回一个 DataSet 对象,该对象包含指定合并代理的会话信息。
EnumMergeAgentSessions2 - 返回一个 DataSet 对象,该对象包含指定合并代理的其他会话信息。
EnumPublications - 返回一个 DataSet 对象,该对象包含有关此分发服务器上所有发布的信息。
EnumPublications2 - 返回一个 DataSet 对象,该对象包含有关此分发服务器上所有发布的附加信息。
EnumSnapshotAgentSessionDetails - 返回一个 DataSet 对象,该对象包含有关指定快照代理和会话的详细信息。
EnumSnapshotAgentSessions - 返回一个 DataSet 对象,该对象包含指定快照代理的会话信息。
EnumSubscriptions - 返回一个 DataSet 对象,该对象包含有关此分发服务器上发布的所有订阅的信息。
监视分发服务器上特定发布的属性
使用 ServerConnection 类创建与分发服务器的连接。
获取 PublicationMonitor 对象的方式如下。
创建 PublicationMonitor 类的一个实例。 为发布设置属性DistributionDBName、PublisherName、PublicationDBName和Name,并将ConnectionContext属性设置为在步骤 1 中创建的ServerConnection。 调用 LoadProperties 方法获取该对象的属性。 如果此方法返回
false
,则发布属性定义不正确或发布不存在。通过PublicationMonitors对象的PublisherMonitor属性访问PublicationMonitorCollection。
执行以下一个或多个方法以返回有关此发布的信息。
EnumErrorRecords - 返回一个 DataSet 对象,该对象包含有关指定错误的错误记录。
EnumLogReaderAgent - 返回一个 DataSet 对象,该对象包含有关此发布的日志读取器代理的信息。
EnumMonitorThresholds - 返回一个 DataSet 对象,该对象包含有关为此出版物设置的监视器警告阈值的信息。
EnumQueueReaderAgent - 返回一个 DataSet 对象,该对象包含用于此发布的队列读取器代理的信息。
EnumSnapshotAgent - 返回一个 DataSet 对象,该对象包含有关此发布的快照代理的信息。
EnumSubscriptions - 返回一个 DataSet 对象,该对象包含有关此发布的订阅的信息。
EnumSubscriptions2 - 返回一个 DataSet 对象,该对象包含有关基于提供的 SubscriptionResultOption 的此发布订阅的其他信息。
EnumTracerTokenHistory - 返回一个 DataSet 对象,该对象包含指定跟踪令牌的延迟信息。
EnumTracerTokens - 返回一个 DataSet 对象,该对象包含有关插入到此发布中的所有跟踪令牌的信息。
监视正在等待在订阅服务器上应用的事务命令
使用 ServerConnection 类创建与分发服务器的连接。
通过以下方法之一 PublicationMonitor 获取对象。
创建 PublicationMonitor 类的一个实例。 设置发布的 DistributionDBName、PublisherName、PublicationDBName 和 Name 属性,并将 ConnectionContext 属性设置为在步骤 1 中创建的 ServerConnection。 调用 LoadProperties 方法获取该对象的属性。 如果此方法返回
false
,则发布属性定义不正确或发布不存在。通过现有PublisherMonitor对象的PublicationMonitors属性访问PublicationMonitorCollection。
执行 TransPendingCommandInfo 方法,该方法返回一个 PendingCommandInfo 对象。
使用此对象的属性 PendingCommandInfo 来确定挂起命令的估计数量以及完成这些命令传递所需的时间长度。
设置发布的监视器警告阈值
使用 ServerConnection 类创建与分发服务器的连接。
通过以下方法之一 PublicationMonitor 获取对象。
创建 PublicationMonitor 类的一个实例。 设置发布的DistributionDBName、PublisherName、PublicationDBName和Name属性,并将ConnectionContext属性设置为在步骤 1 中创建的ServerConnection。 调用 LoadProperties 方法获取该对象的属性。 如果此方法返回
false
,则发布属性定义不正确或发布不存在。通过现有PublisherMonitor对象的PublicationMonitors属性访问PublicationMonitorCollection。
执行EnumMonitorThresholds方法。 请注意返回 ArrayList 的对象 MonitorThreshold 中的当前阈值设置。
ChangeMonitorThreshold执行方法。 传递以下参数:
metricID - 一个 Int32 值,表示下表中的监视阈值指标:
价值 DESCRIPTION 1 expiration
- 监视事务发布的订阅即将过期。2 latency
- 监视事务发布的订阅的性能。4 mergeexpiration
- 监视合并发布的订阅即将过期。5 mergeslowrunduration
- 通过低带宽(拨号)连接监视合并同步的持续时间。6 mergefastrunduration
- 通过高带宽(LAN)连接监视合并同步的持续时间。7 mergefastrunspeed
- 通过高带宽(LAN)连接监视合并同步的同步速率。8 mergeslowrunspeed
- 通过低带宽(拨号)连接监视合并同步的同步速率。启用 - Boolean 指示该指标是否为发布启用的值。
thresholdValue - 设置阈值的整数值。
shouldAlert - 指示此阈值是否应生成警报的整数。