sp_publication_validation (Transact-SQL)
適用於:SQL Server Azure 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為位,預設值為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) 服務。
權限
只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行sp_publication_validation。
另請參閱
驗證訂閱者端的資料
sp_article_validation (Transact-SQL)
sp_table_validation (Transact-SQL)
系統預存程序 (Transact-SQL)