如何:驗證訂閱者端的資料 (複寫 Transact-SQL 程式設計)
複寫能讓您以程式設計的方式,使用複寫預存程序驗證「訂閱者」端的資料是否符合「發行者」端的資料,其中所用的程序是依照複寫拓樸的類型而定。
若要驗證交易式發行集中所有發行項的資料
在發行集資料庫的「發行者」端,執行 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 權限。
(選擇性) 針對每個訂閱啟動「散發代理程式」(如果尚未執行)。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。
檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<驗證複寫的資料>。
若要驗證交易式發行集中單一發行項的資料
在發行集資料庫的「發行者」端,執行 sp_article_validation (Transact-SQL)。指定 @publication、@article 的發行項名稱,及 @rowcount_only 的下列其中一個值:
1 - 只限列數檢查 (預設值)
2 - 列數及二進位總和檢查碼。
[!附註]
若要成功地執行 sp_article_validation (Transact-SQL),您必須有已發行基底資料表之所有資料行的 SELECT 權限。
(選擇性) 針對每個訂閱啟動「散發代理程式」(如果尚未執行)。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。
檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<驗證複寫的資料>。
若要驗證交易式發行集中單一訂閱者的資料
在發行集資料庫的「發行者」端,使用 BEGIN TRANSACTION (Transact-SQL) 來開啟明確交易。
在發行集資料庫的「發行者」端,執行 sp_marksubscriptionvalidation (Transact-SQL)。指定 @publication 的發行集、@subscriber 的「訂閱者」名稱,及 @destination_db 的訂閱資料庫名稱。
(選擇性) 針對每個要驗證的訂閱重複步驟 2。
在發行集資料庫的「發行者」端,執行 sp_article_validation (Transact-SQL)。指定 @publication、@article 的發行項名稱,及 @rowcount_only 的下列其中一個值:
1 - 只限列數檢查 (預設值)
2 - 列數及二進位總和檢查碼。
[!附註]
若要成功地執行 sp_article_validation (Transact-SQL),您必須有已發行基底資料表之所有資料行的 SELECT 權限。
在發行集資料庫的「發行者」端,使用 COMMIT TRANSACTION (Transact-SQL) 來認可交易。
(選擇性) 針對每個要驗證的發行項重複步驟 1 到 5。
(選擇性) 啟動「散發代理程式」(如果尚未執行)。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。
檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<如何:驗證訂閱者端的資料 (SQL Server Management Studio)>。
若要驗證所有合併發行集訂閱中的資料
在發行集資料庫的「發行者」端,執行 sp_validatemergepublication (Transact-SQL)。指定 @publication 以及下列其中一個 @level 值:
1 - 只驗證列數。
3 - 驗證列數二進位總和檢查碼。
這會標示所有訂閱以供驗證。
針對每項訂閱啟動「合併代理程式」。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。
檢查代理程式輸出,以取得驗證的結果。如需詳細資訊,請參閱<如何:驗證訂閱者端的資料 (SQL Server Management Studio)>。
若要驗證選取的合併發行集訂閱中的資料
在發行集資料庫的「發行者」端,執行 sp_validatemergesubscription (Transact-SQL)。指定 @publication、@subscriber 的「訂閱者」名稱、@subscriber_db 的訂閱資料庫名稱,及下列其中一個 @level 值:
1 - 只驗證列數。
3 - 驗證列數二進位總和檢查碼。
這會標示選取的訂閱以供驗證。
針對每項訂閱啟動合併代理程式。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>和<如何:同步處理發送訂閱 (複寫程式設計)>。
檢查代理程式輸出,以取得驗證的結果。
針對每個要驗證的訂閱重複步驟 1 到 3。
[!附註]
您也可以在執行 複寫合併代理程式 時藉由指定 -Validate 參數,在同步處理結束時驗證合併發行集的訂閱。
若要使用合併代理程式參數驗證訂閱中的資料
以下列其中一種方法,從命令提示字元啟動「合併代理程式」(在「訂閱者」端的為提取訂閱,在「散發者」端的則為發送訂閱)。
針對 -Validate 參數,指定值 1 (列數) 或 3 (列數和二進位總和檢查碼)。
針對 -ProfileName 參數,指定 rowcount validation 或 rowcount and checksum validation。
如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>或<如何:同步處理發送訂閱 (複寫程式設計)>。