共用方式為


sp_publication_validation (Transact-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'
    這是發行集的名稱。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