静止复制拓扑(复制 Transact-SQL 编程)

适用于:SQL Server (所有受支持的版本) Azure SQL 托管实例

“停止”系统,需要停止所有节点上已发布表的操作,并确保每个节点都已收到来自所有其他节点的所有更改。 本主题说明了如何停止复制拓扑(这是许多管理任务所必需的操作),以及如何确保节点收到来自其他节点的全部更改。

停止包含只读订阅的事务复制拓扑

  1. 停止发布服务器上所有已发布表中的活动。

  2. 在发布服务器上,对发布数据库执行 sp_posttracertoken (Transact-SQL)

  3. 在发布服务器的发布数据库中,执行 sp_helptracertokenhistory

  4. 确保每个订阅服务器已收到跟踪令牌。

停止包含可更新订阅的事务复制拓扑

  1. 停止发布服务器和所有订阅服务器上所有已发布表中的活动。

  2. 如果任何订阅服务器使用排队更新订阅:

    1. 如果队列读取器代理未以连续模式运行,请运行该代理。 有关运行代理的详细信息,请参阅复制代理可执行文件概念启动和停止复制代理 (SQL Server Management Studio)

    2. 若要验证队列是否为空,请在每个订阅服务器上执行 sp_replqueuemonitor

  3. 在发布服务器的发布数据库中,执行 sp_posttracertoken

  4. 在发布服务器的发布数据库中,执行 sp_helptracertokenhistory

  5. 确保每个订阅服务器已收到跟踪令牌。

停止对等事务复制拓扑

  1. 停止所有节点上所有已发布表中的活动。

  2. 对拓扑中每个发布数据库执行 sp_requestpeerresponse

  3. 如果日志读取器代理或分发代理未以连续模式运行,请运行该代理。 必须在启动分发代理之前启动日志读取器代理。 有关运行代理的详细信息,请参阅复制代理可执行文件概念启动和停止复制代理 (SQL Server Management Studio)

  4. 对拓扑中每个发布数据库执行 sp_helppeerresponses 。 确保结果集包含来自所有其他节点的响应。

确保对等节点已收到所有以前的更改

  1. 对要检查的节点上的发布数据库执行 sp_requestpeerresponse

  2. 如果日志读取器代理或分发代理未以连续模式运行,请运行该代理。 必须在启动分发代理之前启动日志读取器代理。 有关运行代理的详细信息,请参阅复制代理可执行文件概念启动和停止复制代理 (SQL Server Management Studio)

  3. 对要检查的节点上的发布数据库执行 sp_helppeerresponses 。 确保结果集包含来自所有其他节点的响应。

停止合并复制拓扑

  1. 停止发布服务器和所有订阅服务器上所有已发布表中的活动。

  2. 为每个订阅运行两次合并代理:首先同步所有订阅,然后再同步每个订阅一次。 这样可确保所有更改都复制到所有节点。 有关运行代理的详细信息,请参阅复制代理可执行文件概念启动和停止复制代理 (SQL Server Management Studio)

    注意

    如果同步过程中出现冲突,则运行合并代理两次之后冲突解决所需的更改可能不会传播到所有节点。

另请参阅

管理对等拓扑(复制 Transact-SQL 编程)
为事务复制测量滞后时间和验证连接