分享方式:


sp_publication_validation (Transact-SQL)

適用於:SQL Server Azure SQL 受控執行個體

為指定發行集中的每個發行項起始發行項驗證要求。 這個預存程式會在發行集資料庫的發行者端執行。

Transact-SQL 語法慣例

語法

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

引數

[ @publication = ] N'publication'

發行集的名稱。 @publication為 sysname,沒有預設值。

[ @rowcount_only = ] rowcount_only

指定是否只傳回數據表的數據列計數。 @rowcount_only為 smallint,而且可以是下列其中一個值。

Description
0 執行 SQL Server 7.0 相容的總和檢查碼。

注意: 水平篩選發行項時,會執行數據列計數作業,而不是總和檢查碼作業。
1 (預設值) 只執行數據列計數檢查。
2 執行數據列計數和二進位總和檢查碼。

[ @full_or_fast = ] full_or_fast

用來計算數據列計數的方法。 @full_or_fast為 tinyint,而且可以是下列其中一個值。

Description
0 使用 COUNT(*)執行完整計數。
1 從執行快速計數 sysindexes.rows。 計算 sys.sysindexes 中的數據列比計算實際數據表中的數據列更快。 不過,由於 sys.sysindexes 已延遲更新,因此數據列計數可能不正確。
2 (預設值) 先嘗試快速方法,進行條件式快速計數。 如果快速方法顯示差異,則會還原為完整方法。 如果 expected_rowcountNULL 且預存程式正用來取得值,則一律會使用完整 COUNT(*)

[ @shutdown_agent = ] shutdown_agent

指定 散發代理程式 是否應該在驗證完成時立即關閉。 @shutdown_agent為 bit,預設值為 0

  • 如果 0為 ,則復寫代理程式不會關閉。
  • 如果 1為 ,復寫代理程式會在驗證最後一篇文章之後關閉。

[ @publisher = ] N'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) 服務。

權限

只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行 sp_publication_validation