如何验证订阅服务器中的数据(复制 Transact-SQL 编程)

通过复制,可以使用复制存储过程以编程方式验证订阅服务器中的数据与发布服务器中的数据是否匹配,使用的过程取决于复制拓扑的类型。

验证事务发布中所有项目的数据

  1. 在发布服务器上,对发布数据库执行 sp_publication_validation (Transact-SQL)。 指定 @publication 并为 @rowcount_only 指定以下值之一:

    • 1 - 只检查行计数(默认值)

    • 2 - 行计数和二进制校验和。

    注意注意

    执行 sp_publication_validation (Transact-SQL) 时,将对发布中的每个项目都执行 sp_article_validation (Transact-SQL)。 若要成功地执行 sp_publication_validation (Transact-SQL),必须对发布的基表中的所有列拥有 SELECT 权限。

  2. (可选)如果分发代理尚未运行,请为每个订阅都启动分发代理。 有关详细信息,请参阅如何同步请求订阅(复制编程)如何同步推送订阅(复制编程)

  3. 检查代理输出以获取验证结果。 有关详细信息,请参阅验证已复制的数据

验证事务发布中单个项目的数据

  1. 在发布服务器上,对发布数据库执行 sp_article_validation (Transact-SQL)。 指定 @publication、为 @article 指定项目名称并为 @rowcount_only 指定以下值之一:

    • 1 - 只检查行计数(默认值)

    • 2 - 行计数和二进制校验和。

    注意注意

    若要成功执行 sp_article_validation (Transact-SQL),必须对发布的基表中的所有列拥有 SELECT 权限。

  2. (可选)如果分发代理尚未运行,请为每个订阅都启动分发代理。 有关详细信息,请参阅如何同步请求订阅(复制编程)如何同步推送订阅(复制编程)

  3. 检查代理输出以获取验证结果。 有关详细信息,请参阅验证已复制的数据

验证订阅事务发布的单个订阅服务器的数据

  1. 在发布服务器的发布数据库中,使用 BEGIN TRANSACTION (Transact-SQL) 打开一个显式事务。

  2. 在发布服务器上,对发布数据库执行 sp_marksubscriptionvalidation (Transact-SQL)。 为 @publication 指定发布,为 @subscriber 指定订阅服务器的名称,并为 @destination_db 指定订阅数据库的名称。

  3. (可选)对每个要验证的订阅都重复步骤 2。

  4. 在发布服务器上,对发布数据库执行 sp_article_validation (Transact-SQL)。 指定 @publication、为 @article 指定项目名称并为 @rowcount_only 指定以下值之一:

    • 1 - 只检查行计数(默认值)

    • 2 - 行计数和二进制校验和。

    注意注意

    若要成功执行 sp_article_validation (Transact-SQL),必须对发布的基表中的所有列拥有 SELECT 权限。

  5. 在发布服务器的发布数据库中,使用 COMMIT TRANSACTION (Transact-SQL) 提交事务。

  6. (可选)为每个要验证的项目都重复步骤 1 到步骤 5。

  7. (可选)如果分发代理尚未运行,请启动分发代理。 有关详细信息,请参阅如何同步请求订阅(复制编程)如何同步推送订阅(复制编程)

  8. 检查代理输出以获取验证结果。 有关详细信息,请参阅如何在订阅服务器上验证数据 (SQL Server Management Studio)

验证合并发布的所有订阅中的数据

  1. 在发布服务器上,对发布数据库执行 sp_validatemergepublication (Transact-SQL)。 指定 @publication 并为 @level 指定以下值之一:

    • 1 - 只验证行计数。

    • 3 - 行计数二进制校验和验证。

    这样会标记所有订阅以便验证。

  2. 启动每个订阅的合并代理。 有关详细信息,请参阅如何同步请求订阅(复制编程)如何同步推送订阅(复制编程)

  3. 检查代理输出以获取验证结果。 有关详细信息,请参阅如何在订阅服务器上验证数据 (SQL Server Management Studio)

验证订阅合并发布的所选订阅中的数据

  1. 在发布服务器上,对发布数据库执行 sp_validatemergesubscription (Transact-SQL)。 指定 @publication,为 @subscriber 指定订阅服务器的名称,为 @subscriber_db 指定订阅数据库的名称,并为 @level 指定以下值之一:

    • 1 - 只验证行计数。

    • 3 - 行计数二进制校验和验证。

    这样会标记所选订阅以便验证。

  2. 启动每个订阅的合并代理。 有关详细信息,请参阅如何同步请求订阅(复制编程)如何同步推送订阅(复制编程)

  3. 检查代理输出以获取验证结果。

  4. 为每个要验证的订阅重复步骤 1 到步骤 3。

注意注意

通过在运行 复制合并代理 时指定 -Validate 参数还可以在同步结束时验证对合并发布的订阅。

使用合并代理参数验证订阅中的数据

  • 通过以下方式之一从命令提示符下启动订阅服务器(请求订阅)或分发服务器(推送订阅)上的合并代理。

    • -Validate 参数指定值 1(行计数)或 3(行计数和二进制校验和)。

    • -ProfileName 参数指定 rowcount validationrowcount and checksum validation

    有关详细信息,请参阅如何同步请求订阅(复制编程)如何同步推送订阅(复制编程)