sp_publication_validation (Transact-SQL)

适用于: SQL Server Azure SQL 托管实例

为指定发布中的每个项目启动项目验证请求。 此存储过程在发布服务器上对发布数据库执行。

Transact-SQL 语法约定

语法

sp_publication_validation
    [ @publication = ] N'publication'
    [ , [ @rowcount_only = ] rowcount_only ]
    [ , [ @full_or_fast = ] full_or_fast ]
    [ , [ @shutdown_agent = ] shutdown_agent ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

参数

[ @publication = ] N'publication'

发布的名称。 @publicationsysname,无默认值。

[ @rowcount_only = ] rowcount_only

指定是否仅返回表的行计数。 @rowcount_only为 smallint,可以是以下值之一。

说明
0 执行 SQL Server 7.0 兼容的校验和。

注意: 水平筛选项目时,将执行行计数操作,而不是校验和操作。
1(默认值) 仅执行行计数检查。
2 执行行计数和二进制校验和。

[ @full_or_fast = ] full_or_fast

用于计算行计数的方法。 @full_or_fasttinyint,可以是以下值之一。

说明
0 使用 COUNT(*). 执行完整计数。
1 执行快速计数。sysindexes.rows 在 sys.sysindexes对行进行计数比计算实际表中的行更快。 但是,由于 sys.sysindexes 已延迟更新,因此行计数可能不准确。
2(默认值) 首先尝试使用快速方法进行条件性快速计数。 如果快速方法显示出差异,则转而使用完整方法。 如果 expected_rowcount 使用的是 NULL 存储过程来获取该值,则始终使用完整 COUNT(*)

[ @shutdown_agent = ] shutdown_agent

指定分发代理在完成验证后是否应立即关闭。 @shutdown_agent为,默认值为 0.

  • 如果 0,复制代理不会关闭。
  • 如果 1,复制代理会在最后一篇文章验证后关闭。

[ @publisher = ] N'publisher'

指定非 SQL Server 发布服务器。 @publisher为 sysname,默认值为 NULL.

在 SQL Server 发布服务器上请求验证时,不应使用@publisher。

返回代码值

0(成功)或 1(失败)。

注解

sp_publication_validation 用于事务复制。

sp_publication_validation 激活与发布关联的项目后,可以随时调用。 可以手动运行一次此过程,或将其作为验证数据的定期计划作业的一部分。

如果应用程序具有立即更新的订阅服务器, sp_publication_validation 可能会检测到虚假错误。 sp_publication_validation 首先计算发布服务器上的行计数或校验和,然后在订阅服务器上计算。 由于在发布服务器中完成行计数或校验和之后,但在订阅服务器中完成行计数或校验和之前,即时更新触发器可以将更新从订阅服务器传播到发布服务器,因此值可能会更改。 若要确保在验证发布时订阅服务器和发布服务器上的值不会更改,请在验证期间停止发布服务器上的Microsoft分布式事务处理协调器 (MS DTC) 服务。

权限

只有 sysadmin 固定服务器角色的成员db_owner固定数据库角色的成员才能执行sp_publication_validation