比較複寫資料表的差異 (複寫程式設計)

適用於:SQL ServerAzure SQL 受控執行個體

發行項驗證可用來判斷「發行者」和「訂閱者」端資料表發行項的發行資料是否互異,若有則可能代表無法聚合。 如需詳細資訊,請參閱驗證複寫的資料。 不過,驗證只會傳回通過或失敗資訊,而不會針對來源及目的地資料表之間的差異提供任何相關資訊。 tablediff 命令提示字元公用程式會傳回兩個資料表之間差異的詳細資訊,甚至可能產生 Transact-SQL 指令碼,將訂閱向發行者端的資料聚合。

注意

只有 SQL Server 伺服器支援 tablediff 公用程式。

若要使用 tablediff 比較複寫資料表的差異

  1. 從複寫拓撲中任何伺服器的命令提示字元執行 tablediff Utility。 指定下列參數:

    • -sourceserver - 已知其上資料正確的伺服器名稱,通常是「發行者」端。

    • -sourcedatabase - 包含正確資料之資料庫的名稱。

    • -sourcetable - 所比較發行項之來源資料表的名稱。

    • (選擇性) -sourceschema - 來源資料表的結構描述擁有者 (若非預設的結構描述)。

    • (選擇性) 在使用「SQL Server 驗證」連接到「發行者」時,使用 -sourceuser-sourcepassword

      重要

      盡可能使用 Windows 驗證。 如果必須使用「SQL Server 驗證」,請提示使用者在執行階段輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

    • -destinationserver - 所比較資料所在伺服器的名稱,通常是「訂閱者」。

    • -destinationdatabase - 所比較資料庫的名稱。

    • -destinationtable - 所比較資料表的名稱。

    • (選擇性) -destinationschema - 目的地資料表的結構描述擁有者 (若非預設的結構描述)。

    • (選擇性) 在使用「SQL Server 驗證」連線到「訂閱者」時,使用 -destinationuser-destinationpassword

      重要

      盡可能使用 Windows 驗證。 如果必須使用「SQL Server 驗證」,請提示使用者在執行階段輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

    • (選擇性) 使用 -c 可執行資料行層級比較。

    • (選擇性) 使用 -q 可執行僅限列數和結構描述的快速比較。

    • (選擇性) 針對 -o 指定檔案名稱和路徑,以將結果輸出至檔案。

    • (選擇性) 指定訂閱資料庫中的資料表,以在其中插入 -et的結果。 如果該資料表已存在,請指定 -dt 先將該資料表卸除。

    • (選擇性) 使用 -f 可產生 Transact-SQL 檔案,以修正「訂閱者」端的資料,使其符合「發行者」端的資料。 使用 -df 可指定每個檔案中的 Transact-SQL 陳述式數目。

    • (選擇性) 使用 -rc-ri 可指定重試作業的次數和重試間隔。

    • (選擇性) 使用 -strict 可在來源和目的地資料表之間強制執行嚴格的結構描述比較。

另請參閱

驗證訂閱者端的資料