sp_publication_validation (Transact-SQL)

適用範圍: 是SQL Server (所有支援的版本) 是Azure SQL 受控執行個體

針對指定發行集中的每個發行項來初始化發行項驗證要求。 這個預存程序執行於發行集資料庫的發行者端。

主題連結圖示 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' 這是發行集的名稱。 發行 集是 sysname,沒有預設值。

[ @rowcount_only = ] 'rowcount_only' 這是指是否只傳回資料表的資料列計數。 rowcount_onlySmallint ,而且可以是下列其中一個值。

描述
0 執行 SQL Server 7.0 相容總和檢查碼。

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

注意:對於 SQL Server 7.0 版訂閱者,只會執行資料列計數驗證。

[ @full_or_fast = ] 'full_or_fast' 這是用來計算資料列計數的方法。 full_or_fastTinyint ,而且可以是下列其中一個值。

描述
0 利用 COUNT(*) 執行完整計數。
1 sysindexes 快速算算。 計算 sys. sysindexes 中的資料列比計算實際資料表中的資料列更快。 不過,因為 sys. sysindexes 會延遲更新,所以資料列計數可能不正確。
2 (預設值) 先嘗試快速方法來執行條件式快速計數。 如果快速方法有不同結果,便轉換成完整方法。 如果 expected_rowcount 為 Null,且使用預存程式來取得值,就一律會使用完整的計數 ( * ) 。

[ @shutdown_agent = ] 'shutdown_agent' 這是指在驗證完成時是否應該立即關閉散發代理程式。 shutdown_agentbit,預設值是 0。 如果是 0,複寫代理程式就不會關閉。 如果是 1,則複寫代理程式會在最後一篇文章經過驗證後關閉。

[ @publisher = ] 'publisher'指定非 SQL Server Publisher。 publishersysname,預設值是 Null。

注意

在 Publisher 上要求驗證時,不應使用「發行者」 SQL Server 。

傳回碼值

0 (成功) 或 1 (失敗)

備註

sp_publication_validation 用於異動複寫中。

您可以在發行集相關聯的發行項啟用之後隨時呼叫 sp_publication_validation 。 您可以手動執行這個程序 (一次),也可以在定期排程驗證資料的作業中執行這個程序。

如果您的應用程式有立即更新的訂閱者, sp_publication_validation 可能會偵測到偽造的錯誤。 sp_publication_validation 首先在 Publisher,然後在訂閱者端計算資料列計數或總和檢查碼。 由於在發行者端完成資料列計數或總和檢查碼之後,在訂閱者端完成資料列計數或總和檢查碼之前,立即更新觸發程序可能會將訂閱者的更新傳播給發行者,因此,這些值可能會有所不同。 若要確定在驗證發行集時,並不會變更在訂閱者端和發行者端的值,請在驗證期間,停止在發行者端的 Microsoft 分散式交易協調器 (MS DTC) 服務。

權限

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

另請參閱

驗證訂閱者端的資料
sp_article_validation (SQL transact-sql)
sp_table_validation (SQL transact-sql)
系統預存程序 (Transact-SQL)