Share via


如何:驗證訂閱者端的資料 (複寫 Transact-SQL 程式設計)

複寫能讓您以程式設計的方式,使用複寫預存程序驗證「訂閱者」端的資料是否符合「發行者」端的資料,其中所用的程序是依照複寫拓樸的類型而定。

若要驗證交易式發行集中所有發行項的資料

  1. 在發行集資料庫的「發行者」端,執行 sp_publication_validation (Transact-SQL)。指定 @publication,以及下列其中一個 @rowcount_only 值:

    • 1 - 只限列數檢查 (預設值)

    • 2 - 列數及二進位總和檢查碼。

    [!附註]

    在執行 sp_publication_validation (Transact-SQL) 時,會針對發行集中的每個發行項執行 sp_article_validation (Transact-SQL)。若要成功地執行 sp_publication_validation (Transact-SQL),您必須有已發行基底資料表之所有資料行的 SELECT 權限。

  2. (選擇性) 針對每個訂閱啟動「散發代理程式」(如果尚未執行)。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。

  3. 檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<驗證複寫的資料>。

若要驗證交易式發行集中單一發行項的資料

  1. 在發行集資料庫的「發行者」端,執行 sp_article_validation (Transact-SQL)。指定 @publication@article 的發行項名稱,及 @rowcount_only 的下列其中一個值:

    • 1 - 只限列數檢查 (預設值)

    • 2 - 列數及二進位總和檢查碼。

    [!附註]

    若要成功地執行 sp_article_validation (Transact-SQL),您必須有已發行基底資料表之所有資料行的 SELECT 權限。

  2. (選擇性) 針對每個訂閱啟動「散發代理程式」(如果尚未執行)。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。

  3. 檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<驗證複寫的資料>。

若要驗證交易式發行集中單一訂閱者的資料

  1. 在發行集資料庫的「發行者」端,使用 BEGIN TRANSACTION (Transact-SQL) 來開啟明確交易。

  2. 在發行集資料庫的「發行者」端,執行 sp_marksubscriptionvalidation (Transact-SQL)。指定 @publication 的發行集、@subscriber 的「訂閱者」名稱,及 @destination_db 的訂閱資料庫名稱。

  3. (選擇性) 針對每個要驗證的訂閱重複步驟 2。

  4. 在發行集資料庫的「發行者」端,執行 sp_article_validation (Transact-SQL)。指定 @publication@article 的發行項名稱,及 @rowcount_only 的下列其中一個值:

    • 1 - 只限列數檢查 (預設值)

    • 2 - 列數及二進位總和檢查碼。

    [!附註]

    若要成功地執行 sp_article_validation (Transact-SQL),您必須有已發行基底資料表之所有資料行的 SELECT 權限。

  5. 在發行集資料庫的「發行者」端,使用 COMMIT TRANSACTION (Transact-SQL) 來認可交易。

  6. (選擇性) 針對每個要驗證的發行項重複步驟 1 到 5。

  7. (選擇性) 啟動「散發代理程式」(如果尚未執行)。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。

  8. 檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<如何:驗證訂閱者端的資料 (SQL Server Management Studio)>。

若要驗證所有合併發行集訂閱中的資料

  1. 在發行集資料庫的「發行者」端,執行 sp_validatemergepublication (Transact-SQL)。指定 @publication 以及下列其中一個 @level 值:

    • 1 - 只驗證列數。

    • 3 - 驗證列數二進位總和檢查碼。

    這會標示所有訂閱以供驗證。

  2. 針對每項訂閱啟動「合併代理程式」。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。

  3. 檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<如何:驗證訂閱者端的資料 (SQL Server Management Studio)>。

若要驗證選取的合併發行集訂閱中的資料

  1. 在發行集資料庫的「發行者」端,執行 sp_validatemergesubscription (Transact-SQL)。指定 @publication@subscriber 的「訂閱者」名稱、@subscriber_db 的訂閱資料庫名稱,及下列其中一個 @level 值:

    • 1 - 只驗證列數。

    • 3 - 驗證列數二進位總和檢查碼。

    這會標示選取的訂閱以供驗證。

  2. 針對每項訂閱啟動合併代理程式。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。

  3. 檢查代理程式輸出,以取得驗證的結果。

  4. 針對每個要驗證的訂閱重複步驟 1 到 3。

[!附註]

您也可以在執行 複寫合併代理程式 時藉由指定 -Validate 參數,在同步處理結束時驗證合併發行集的訂閱。

若要使用合併代理程式參數驗證訂閱中的資料