啟動對指定發(fā)布中的各項目的項目驗證請求。此存儲過程在發(fā)布服務器的發(fā)布數據庫上執(zhí)行。
sp_publication_validation [ @publication = ] 'publication'
[@rowcount_only =] type_of_check_requested
[ , [ @rowcount_only = ] type_of_check_requested ]
[ , [ @shutdown_agent = ] shutdown_agent ]
[@publication =] 'publication'
是發(fā)布名。publication 的數據類型為 sysname,無默認值。
[@rowcount_only =] type_of_check_requested
表示是否只返回表的行數。rowcount_only 的數據類型為 smallint,其默認值為 1。type_of_check_requested 的數據類型為 smallint,其默認值為 1,如果是 0,則執(zhí)行 SQL Server 7.0 兼容的校驗值。如果為 1,則只執(zhí)行行數檢查。如果為 2,則執(zhí)行行數和校驗值。
[@full_or_fast =] full_or_fast
是計算行數的方法。full_or_fast 的數據類型為 tinyint,默認值為 2,可以是下列值之一。
| 值 | 描述 |
|---|---|
| 0 | 用 COUNT(*) 進行完整計數。 |
| 1 | 從 sysindexes.rows 進行快速計數。在 sysindexes 中對行進行計數比在實表中計數快得多。但由于很少對 sysindexes 進行更新,所以行計數可能不準確。 |
| 2(默認值) | 首先使用快速方法進行條件快速計數。如果快速方法顯示出差異,則轉而使用完整方法。如果 expected_rowcount 的值為 NULL,而且正在使用存儲過程獲取該值,則始終使用完整 COUNT(*)。 |
[@shutdown_agent =] shutdown_agent
表示分發(fā)代理程序是否應在完成驗證后立即關閉。shutdown_agent 的數據類型為 bit,默認值 0。如果為 0,表示復制代理程序不關閉。如果為 1,則表示在驗證完最后一個項目后,復制代理程序將關閉。
0(成功)或 1(失?。?/P>
sp_publication_validation 用于快照復制和事務復制。
激活了與發(fā)布關聯的項目后可以隨時調用 sp_publication_validation??梢允止み\行一次此過程,或將其作為驗證數據的定期調度作業(yè)的一部分。
如果應用程序有即時更新訂閱服務器,則 sp_publication_validation 可以檢測虛假的錯誤。sp_publication_validation 先計算發(fā)布服務器上的行數或校驗值,然后計算訂閱服務器上的行數或校驗值。因為在發(fā)布服務器上驗證完行數和校驗值后,但是在訂閱服務器上驗證行數或校驗值之前,即時更新觸發(fā)器可能將更新從訂閱服務器傳播到發(fā)布服務器,所以該值無法更改。為確保訂閱服務器和發(fā)布服務器上的值在驗證發(fā)布期間不更改,請在驗證期間停止發(fā)布服務器上的 MSDTC 服務。
除非由 sysadmin 或 db_owner 的成員執(zhí)行,否則,必須在項目中使用的基表的所有列上具有 SELECT 權限(即時項目為垂直分區(qū))才能執(zhí)行 sp_publication_validation。
相關文章