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,而且可以是下列值之一。值
描述
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 是 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。