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