sp_publication_validation (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

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

Transact-SQL 语法约定

语法

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

参数

[ @publication = ] 'publication' 发布的名称。 publicationsysname,无默认值。

[ @rowcount_only = ] 'rowcount_only' 是否仅返回表的行计数。 rowcount_only较小,可以是以下值之一。

说明
0 执行与 SQL Server 7.0 兼容的检查和。

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

注意:对于 SQL Server 版本 7.0 订阅服务器,仅执行行计数验证。

[ @full_or_fast = ] 'full_or_fast' 用于计算行计数的方法。 full_or_fast是 tinyint,可以是以下值之一。

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

[ @shutdown_agent = ] 'shutdown_agent'验证完成后,分发代理是否应立即关闭。 shutdown_agent,默认值为 0。 如果为 0,则副本 (replica)代理不会关闭。 如果为 1,则副本 (replica)代理在最后一篇文章验证后关闭。

[ @publisher = ] 'publisher' 指定非 SQL Server 发布服务器。 publishersysname,默认值为 NULL。

注意

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

返回代码值

0 (成功) 或 1 (失败)

注解

事务副本 (replica)中使用sp_publication_validation。

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

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

权限

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

另请参阅

在订阅服务器上验证数据
sp_article_validation (Transact-SQL)
sp_table_validation (Transact-SQL)
系统存储过程 (Transact-SQL)