如何以编程方式监视复制(复制 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 值。 这将显示有关该会话的详细监视信息。
为每个相关会话重复步骤 2。
从订阅服务器监视请求订阅的合并代理会话
在订阅服务器上,对订阅数据库执行 sp_replmonitorhelpmergesession。 针对给定订阅指定 @publisher 和 @publication,并为 @publisher_db 指定发布数据库的名称。 这将为此订阅的最后五个合并代理会话返回监视信息。 请记下结果集中相关会话的 Session_id 值。
在订阅服务器上,对订阅数据库执行 sp_replmonitorhelpmergesessiondetail。 为 @session_id 指定步骤 1 中的 Session_id 值。 这将显示有关该会话的详细监视信息。
为每个相关会话重复步骤 2。
查看和修改发布的监视阈值标准
在分发服务器上,对分发数据库执行 sp_replmonitorhelppublicationthresholds。 这将返回为使用此分发服务器的所有发布设置的监视阈值。 若要将结果集限制在属于单个发布服务器或已发布数据库的发布或者单个发布的监视阈值范围之内,请分别指定 @publisher、@publisher_db 或 @publication。 请记下任何必须更改的阈值的 Metric_id 值。 有关详细信息,请参阅在复制监视器中设置阈值和警告。
在分发服务器上,对分发数据库执行 sp_replmonitorchangepublicationthreshold。 根据需要指定下列参数:
为 @metric_id 指定在步骤 1 中获得 Metric_id 值。
为 @value 指定监视阈值标准的新值。
将 @shouldalert 的值指定为 1 以在达到此阈值时记录警报;如果不需要警报,则指定为 0。
将 @mode 的值指定 1 以启用监视阈值标准,或指定为 2 以禁用它。