如何以编程方式监视复制(RMO 编程)
复制监视器是一种图形工具,可用来监视复制拓扑。 可以使用复制管理对象 (RMO) 以编程方式访问相同的监视数据。 RMO 类使您可以对以下任务进行编程:
监视在订阅服务器上运行的最后五个合并代理的结果。
监视发布服务器、发布和订阅的状态。
监视正等待应用到一个或多个订阅服务器上的事务处理命令。
定义用于确定发布何时需要干预的阈值标准。
监视跟踪令牌的状态。 有关详细信息,请参阅如何为事务复制测量滞后时间并验证连接(RMO 编程)。
监视对订阅服务器上的合并发布的订阅
使用 ServerConnection 类创建与订阅服务器的连接。
创建 MergeSubscriberMonitor 类的实例,为订阅设置 Publisher、Publication、PublisherDB 和 SubscriberDB 属性并将 ConnectionContext 属性设置为步骤 1 中创建的 ServerConnection。
调用以下方法之一返回有关该订阅的合并代理会话的信息:
GetSessionsSummary()()()() - 返回一组 MergeSessionSummary 对象,其中包含最后五个合并代理会话的相关信息。 请注意任何相关会话的 SessionID()()()() 值。
GetSessionsSummary(Int32) - 返回一组 MergeSessionSummary 对象,其中包含过去几个小时(作为 hours 参数传入)中发生的合并代理会话(最多是最后五个会话)的相关信息。 请注意任何相关会话的 SessionID()()()() 值。
GetLastSessionSummary - 返回 MergeSessionSummary 对象,该对象具有最后一个合并代理会话的相关信息。 请注意此会话的 SessionID()()()() 值。
GetSessionsSummaryDataSet - 返回 DataSet 对象,其中包含最多最后五个合并代理会话的相关信息,每个合并代理会话占一行。 请注意任何相关会话的 Session_id 列的值。
GetLastSessionSummaryDataRow - 返回 DataRow 对象,该对象具有最后一个合并代理会话的相关信息。 请注意此会话的 Session_id 列的值。
(可选)调用 RefreshSessionSummary(MergeSessionSummary%) 刷新作为 mss, 传递的 MergeSessionSummary 对象的数据,或调用 RefreshSessionSummary(DataRow%) 刷新作为 drRefresh 传递的 DataRow 对象中的数据。
使用步骤 3 中获取的会话 ID 调用以下方法之一,以返回有关特定会话的详细信息:
GetSessionDetails - 针对提供的 sessionID 返回一组 MergeSessionDetail 对象。
GetSessionDetailsDataSet - 返回 DataSet 对象,该对象具有关于指定的 sessionID 的信息。
监视分发服务器上所有发布的复制属性
使用 ServerConnection 类创建与分发服务器的连接。
创建 ReplicationMonitor 类的实例。
将 ConnectionContext 属性设置为步骤 1 中创建的 ServerConnection。
调用 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,则表示发布属性定义不正确,或表示该发布不存在。
从通过现有 PublisherMonitor 对象的 PublicationMonitors 属性访问的 PublicationMonitorCollection 中获取。
执行以下一种或多种方法返回有关此发布的信息。
EnumErrorRecords - 返回 DataSet 对象,该对象包含有关指定的错误的错误记录。
EnumLogReaderAgent - 返回 DataSet 对象,该对象包含有关此发布的日志读取器代理的信息。
EnumMonitorThresholds - 返回 DataSet 对象,该对象包含有关为此发布设置的监视器警告阈值的信息。
EnumQueueReaderAgent - 返回 DataSet 对象,该对象包含有关此发布使用的队列读取器代理的信息。
EnumSnapshotAgent - 返回 DataSet 对象,该对象包含有关此发布的快照代理的信息。
EnumSubscriptions - 返回 DataSet 对象,该对象包含有关对此发布的订阅的信息。
EnumSubscriptions2 - 基于提供的 SubscriptionResultOption 返回 DataSet 对象,该对象包含有关对此发布的订阅的其他信息。
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 方法。 请注意 MonitorThreshold 对象已返回的 ArrayList 中的当前阈值设置。
执行 ChangeMonitorThreshold 方法。 传递以下参数:
metricID - Int32 值,它表示下表中的监视阈值指标:
值
说明
1
expiration - 监视对事务发布的订阅是否即将过期。
2
latency - 监视对事务发布的订阅的性能。
4
mergeexpiration - 监视对合并发布的订阅是否即将过期。
5
mergeslowrunduration - 监视通过低带宽(拨号)连接进行的合并同步的持续时间。
6
mergefastrunduration - 监视通过高带宽 (LAN) 连接进行的合并同步的持续时间。
7
mergefastrunspeed - 监视通过高带宽 (LAN) 连接进行的合并同步的同步速率。
8
mergeslowrunspeed - 监视通过低带宽(拨号)连接进行的合并同步的同步速率。
enable - 用于指示是否为发布启用指标的 Boolean 值。
thresholdValue - 用于设置阈值的整数值。
shouldAlert - 用于指示在此阈值是否应生成警报的整数。