以编程方式监视复制

适用于:SQL ServerAzure SQL 托管实例

复制监视器是一种可用于监视复制拓扑的图形化工具。 可以使用 Transact-SQL 复制存储过程或复制管理对象 (RMO) 以编程方式访问相同的监视数据。 您可以利用这些对象对以下任务进行编程:

  • 监视发布服务器、发布和订阅的状态。

  • 监视一个或多个订阅服务器上的合并代理会话。

  • 监视等待在一个或多个订阅服务器上应用的事务处理命令。

  • 定义用于确定发布何时需要干预的阈值标准。

  • 监视跟踪令牌的状态。

本主题内容:

Transact-SQL

复制管理对象 (RMO)

Transact-SQL

从分发服务器监视发布服务器、发布和订阅

  1. 在分发服务器上,对分发数据库执行 sp_replmonitorhelppublisher。 这将返回使用此分发服务器的所有发布服务器的监视信息。 若要将结果集限制在单个发布服务器范围之内,请指定 @publisher

  2. 在分发服务器上,对分发数据库执行 sp_replmonitorhelppublication. 这将返回使用此分发服务器的所有发布的监视信息。 若要将结果集限制在单个发布服务器、发布或已发布数据库的范围之内,请分别指定 @publisher@publication@publisher_db

  3. 在分发服务器上,对分发数据库执行 sp_replmonitorhelpsubscription。 这将返回使用此分发服务器的所有订阅的监视信息。 若要将结果集限制在属于单个发布服务器、发布或已发布数据库的订阅范围之内,请分别指定 @publisher@publication@publisher_db

监视等待在订阅服务器上应用的事务处理命令

  1. 在分发服务器上,对分发数据库执行 sp_replmonitorsubscriptionpendingcmds。 这将返回为使用此分发服务器的所有订阅挂起的所有命令的监视信息。 若要将结果集限制在为属于单个发布服务器、订阅服务器、发布或已发布数据库的订阅挂起的命令范围之内,请分别指定 @publisher@subscriber@publication@publisher_db

监视等待上载或下载的合并更改

  1. 在发布服务器上,对发布数据库执行 sp_showpendingchanges。 这将返回一个结果集,其中显示了有关等待复制到订阅服务器的更改的信息。 若要将结果集限制在属于单个发布或项目的更改范围之内,请分别指定 @publication@article

  2. 在订阅服务器上,对订阅数据库执行 sp_showpendingchanges。 这将返回一个结果集,其中显示了有关等待复制到发布服务器的更改的信息。 若要将结果集限制在属于单个发布或项目的更改范围之内,请分别指定 @publication@article

监视合并代理会话

  1. 在分发服务器上,对分发数据库执行 sp_replmonitorhelpmergesession。 这将为所有使用此分发服务器的订阅返回有关所有合并代理会话的监视信息(包括 Session_id)。 还可以提供查询 MSmerge_sessions 系统表来获得 Session_id

  2. 在分发服务器上,对分发数据库执行 sp_replmonitorhelpmergesessiondetail。 为 @session_id 指定步骤 1 中的 Session_id值。 这将显示有关该会话的详细监视信息。

  3. 为每个相关会话重复步骤 2。

从订阅服务器监视请求订阅的合并代理会话

  1. 在订阅服务器上,对订阅数据库执行 sp_replmonitorhelpmergesession。 针对给定订阅指定 @publisher@publication,并为 @publisher_db指定发布数据库的名称。 这将为此订阅的最后五个合并代理会话返回监视信息。 请记下结果集中相关会话的 Session_id 值。

  2. 在订阅服务器上,对订阅数据库执行 sp_replmonitorhelpmergesessiondetail。 为 @session_id 指定步骤 1 中的 Session_id值。 这将显示有关该会话的详细监视信息。

  3. 为每个相关会话重复步骤 2。

查看和修改发布的监视阈值标准

  1. 在分发服务器上,对分发数据库执行 sp_replmonitorhelppublicationthresholds。 这将返回为使用此分发服务器的所有发布设置的监视阈值。 若要将结果集限制在属于单个发布服务器或已发布数据库的发布或者单个发布的监视阈值范围之内,请分别指定 @publisher@publisher_db@publication。 请记下任何必须更改的阈值的 Metric_id 值。 有关详细信息,请参阅 Set Thresholds and Warnings in Replication Monitor

  2. 在分发服务器上,对分发数据库执行 sp_replmonitorchangepublicationthreshold。 根据需要指定下列参数:

    • @metric_id 指定在步骤 1 中获得 Metric_id值。

    • @value指定监视阈值标准的新值。

    • @shouldalert 的值指定为 1 以在达到此阈值时记录警报;如果不需要警报,则指定为 0

    • @mode 的值指定为 1 以启用监视阈值指标,或指定为 2 以禁用它。

复制管理对象 (RMO)

监视对订阅服务器上的合并发布的订阅

  1. 使用 ServerConnection 类创建与订阅服务器的连接。

  2. 创建 MergeSubscriberMonitor 类的实例,为订阅设置 PublisherPublicationPublisherDBSubscriberDB 属性并将 ConnectionContext 属性设置为步骤 1 中创建的 ServerConnection

  3. 调用以下方法之一返回有关该订阅的合并代理会话的信息:

  4. (可选)调用 RefreshSessionSummary 刷新作为 MergeSessionSummary 传递的 T:Microsoft.SqlServer.Replication.MergeSessionSummary 对象的数据,或调用 RefreshSessionSummary 刷新作为 DataRow 传递的 T:System.Data.DataRow

  5. 使用步骤 3 中获取的会话 ID 调用以下方法之一,以返回有关特定会话的详细信息:

监视分发服务器上所有发布的复制属性

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 创建 ReplicationMonitor 类的一个实例。

  3. ConnectionContext 属性设置为步骤 1 中创建的 ServerConnection

  4. 调用 LoadProperties 方法获取该对象的属性。

  5. 执行以下一种或多种方法返回使用该分发服务器的所有发布服务器的复制信息。

监视分发服务器上特定发布服务器的发布属性

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 通过下列方法之一获取 PublisherMonitor 对象。

  3. 执行以下一种或多种方法返回有关属于该发布服务器的所有发布的复制信息。

监视分发服务器上的特定发布的属性

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 通过下列方法之一获取 PublicationMonitor 对象。

  3. 执行以下一种或多种方法返回有关此发布的信息。

监视正等待在订阅服务器上应用的事务处理命令

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 通过下列方法之一获取 PublicationMonitor 对象。

  3. 执行 TransPendingCommandInfo 方法,这种方法可返回 PendingCommandInfo 对象。

  4. 使用该 PendingCommandInfo 对象的属性可估算挂起命令的数目以及完成这些命令的传递所需的时间。

为发布设置监视器警告阈值

  1. 使用 ServerConnection 类创建与分发服务器的连接。

  2. 通过下列方法之一获取 PublicationMonitor 对象。

  3. 执行 EnumMonitorThresholds 方法。 请注意 ArrayList 对象已返回的 MonitorThreshold 中的当前阈值设置。

  4. 执行 ChangeMonitorThreshold 方法。 传递以下参数:

    • metricID - Int32 值,它表示下表中的监视阈值指标:

      说明
      1 expiration - 监视对事务发布的订阅是否即将过期。
      2 latency - 监视对事务发布的订阅的性能。
      4 mergeexpiration - 监视对合并发布的订阅是否即将过期。
      5 mergeslowrunduration - 监视通过低带宽(拨号)连接进行的合并同步的持续时间。
      6 mergefastrunduration - 监视通过高带宽 (LAN) 连接进行的合并同步的持续时间。
      7 mergefastrunspeed - 监视通过高带宽 (LAN) 连接进行的合并同步的同步速率。
      8 mergeslowrunspeed - 监视通过低带宽(拨号)连接进行的合并同步的同步速率。
    • enable - Boolean 值。

    • thresholdValue - 用于设置阈值的整数值。

    • shouldAlert - 用于指示在此阈值是否应生成警报的整数。