sp_publication_validation (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'
发布的名称。publication 的数据类型为 sysname,无默认值。
[@rowcount_only=] rowcount_only
是否只返回表的行计数。rowcount_only 的数据类型为 smallint,可以是下列值之一。值
[@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 的数据类型为 bit,默认值为 0。如果为 0,则不关闭复制代理。如果为 1,则验证完最后一个项目之后将关闭复制代理。
[ @publisher= ] '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。
请参阅
参考
sp_article_validation (Transact-SQL)
sp_table_validation (Transact-SQL)
系统存储过程 (Transact-SQL)
其他资源
How to: Validate Data at the Subscriber (Replication Transact-SQL Programming)