共用方式為


HOW TO:比較及同步處理兩個資料庫的資料

這個主題適用於:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

標題適用於 標題適用於 標題不適用於 標題不適用於

您可以使用 Visual Studio比較兩個資料庫中包含的資料。 您所比較的資料庫稱為「來源」(Source) 與「目標」(Target)。

注意事項注意事項

「資料庫專案」(Database Project) 和資料層應用程式專案不包含任何資料。 因此,這兩種類型的專案都不可以是資料比較的來源或目標。 同樣的,.dbschema 檔和 .dacpac 檔也沒有包含資料,因此也不可以是資料比較的來源或目標。

在比較資料時,會產生「資料操作語言」(Data Manipulation Language,DML) 指令碼,讓您更新目標資料庫的部分或全部資料,以同步處理不同的資料庫。 當資料比較完成時,結果會出現在 Visual Studio 的 [資料比較] 視窗中。

在比較完成之後,您可以執行其他步驟:

  • 您可以檢視兩個資料庫之間的差異。 如需詳細資訊,請參閱檢視資料差異。

  • 您可以更新目標的部分或全部,以與來源相符。 如需詳細資訊,請參閱同步處理資料庫資料。

如需詳細資訊,請參閱使用參考資料庫中的資料比較和同步處理一個或多個資料表中的資料

注意事項注意事項

您也可以比較兩個資料庫的「結構描述」(Schema),或相同資料庫的兩個版本結構描述。 如需詳細資訊,請參閱 HOW TO:比較資料庫結構描述

比較資料庫資料

若要使用新增資料比較精靈來比較資料

  1. 指向 [資料] 功能表上的 [資料比較],然後按一下 [新增資料比較]。

    [新增資料比較] 精靈隨即出現。 此外,[資料比較] 視窗也會開啟,Visual Studio 會自動指定像是 DataCompare1 的名稱。

  2. 識別來源和目標資料庫。

    如果 [來源資料庫] 清單或 [目標資料庫] 清單是空白,請按一下 [新增連接]。 在 [連接屬性] 對話方塊中,指定資料庫所在的伺服器,以及連接到資料庫時要使用的驗證類型。 然後按一下 [確定] 關閉 [連接屬性] 對話方塊,回到 [資料比較] 精靈。

    在 [資料比較] 精靈的第一頁上,檢查每個資料庫的資訊是否正確,然後指定要包含在結果中的記錄,再按 [下一步]。 [資料比較] 精靈的第二頁隨即出現,並以階層架構列出資料庫中的資料表和檢視。

  3. 選取要比較的資料表和檢視的核取方塊。 選擇性展開資料庫物件的節點,然後在這些物件內選取要比較的資料行的核取方塊。

    注意事項注意事項

    資料表和檢視表必須符合兩個準則,才會出現在清單中。 首先,物件的結構描述在來源與目標資料庫間必須相符。 其次,只有當資料表與檢視具有主索引鍵、唯一鍵或索引鍵時,才會出現在清單中。 當沒有資料表或檢視符合這兩個準則時,清單就會是空白的。

  4. 如果有一個以上的索引鍵,您可以使用 [比較索引鍵] 資料行來指定資料比較所依據的索引鍵。 例如,您可以指定比較要依據主索引鍵資料行或其他 (可唯一識別) 索引鍵資料行。

  5. 按一下 [完成]。

    比較隨即開始。

    注意事項注意事項

    您可以開啟 [資料] 功能表,按一下 [資料比較],然後按一下 [停止資料比較],停止正在進行的資料比較作業。

    當比較完成時,您可以檢視兩個資料庫的資料差異。 您也可以更新目標資料庫的部分或全部資料,使其符合來源資料庫中的資料。

若要使用 Visual Studio Automation 模型來比較資料

  1. 開啟 [檢視] 功能表,指向 [其他視窗],然後按一下 [命令視窗]。

  2. 在 [命令視窗] 中輸入下列命令:

    Data.NewDataComparison /SrcServerName sServerName /SrcDatabaseName sDatabaseName /SrcUserName sUserName /SrcPassword sPassword /SrcDisplayName sDisplayName /TargetServerName tServerName /TargetDatabaseName tDatabaseName /TargeUserName tUserName /TargetPassword tPassword /TargetDisplayName tDisplayName
    

    將預留位置 (sServerName、sDatabaseName、sUserName、sPassword、sDisplayName、tServerName、tDatabaseName、tUserName、tPassword 和 tDisplayName) 取代為來源和目標資料庫的值。

    如果沒有指定來源和目標,則會出現 [新增資料比較] 對話方塊。 如需 Data.NewDataComparison 命令之參數的詳細資訊,請參閱 Visual Studio 資料庫功能的 Automation 命令參考

    指定之來源和目標資料庫中的資料會進行比較。 結果會出現在 [資料比較] 工作階段中。 如需如何檢視結果或同步處理資料的詳細資訊,請參閱檢視資料差異和同步處理資料庫資料。

檢視資料差異

在您比較兩個資料庫中的資料之後,[資料比較] 會列出您所比較的每一個「資料庫物件」(Database Object) 及其狀態。 您也可以檢視每一個物件內的記錄結果 (依據狀態分組)。 如需狀態指定的詳細資訊,請參閱使用參考資料庫中的資料比較和同步處理一個或多個資料表中的資料

在您檢視差異之後,可以針對不同、遺漏或新增的某些或所有物件或記錄來更新「目標」(Target),使其符合「來源」(Source)。 如需詳細資訊,請參閱同步處理資料庫資料。

若要檢視資料差異

  1. 比較來源和目標資料庫的資料。 如需詳細資訊,請參閱比較資料庫資料。

  2. (選用) 執行下列其中一或兩項作業:

    • 根據預設,會出現所有物件的結果,不論其狀態為何。 若要只顯示特定狀態的物件,請按一下 [篩選] 清單中的選項。

    • 若要檢視特定物件中的記錄結果,請在主要結果窗格中按一下該物件,然後按一下記錄檢視窗格中的索引標籤。 每一個索引標籤都會顯示該物件中具有特定狀態的所有記錄:不同、僅限於來源、僅限於目標及相同。 資料會依據記錄和資料行而顯示。

同步處理資料庫資料

當您比較兩個資料庫的資料之後,您可以同步處理這些資料,其方式是更新所有或部分的「目標」(Target),使其符合「來源」(Source)。 您可以比較兩種資料庫物件中的資料:資料表和檢視表。

若要使用寫入更新命令來更新目標資料:

  1. 比較來源和目標資料庫的資料。 如需詳細資訊,請參閱比較資料庫資料。

    當比較完成之後,[資料比較] 視窗會列出所比較的物件結果。 四個資料行 (名稱為 [不同的記錄]、[僅限於來源]、[僅限於目標] 和 [相同的記錄]) 會針對不相同的物件顯示資訊。 這些資料行會針對每一個這類物件顯示所找到的不同記錄數目以及更新作業將會變更的記錄數目。 這兩個數目一開始會相符,但是您可以在步驟 4 中變更所要更新的物件。

    如需詳細資訊,請參閱使用參考資料庫中的資料比較和同步處理一個或多個資料表中的資料

  2. 在 [資料比較] 視窗的資料表中,按一下資料列。

    詳細資料窗格會顯示您在資料庫物件中按一下之記錄的結果。 記錄會根據狀態分組於索引標籤上,您可以使用這些索引標籤來指定將會從來源傳播至目標的資料。

  3. 在詳細資料窗格中,按一下包含零 (0) 以外之數字的索引標籤名稱。

    [僅限於目標] 資料表的 [更新] 資料行會包含您可用來選取要更新之資料列的核取方塊。 預設會選取每一個核取方塊。

  4. 如果您不希望使用來源中的資料來更新目標中的某些記錄,請清除這些記錄的核取方塊。

    當您清除核取方塊時,您會減少要更新的記錄數目,並顯示變更來反映您的動作。 這個數字會出現在詳細資料窗格的狀態列及主要結果窗格的對應資料行中,如步驟 1 所述。

  5. (選用) 按一下 [匯出至編輯器]。

    Transact-SQL 編輯器視窗隨即開啟,並顯示將用來更新目標的「資料操作語言」(Data Manipulation Language,DML) 指令碼。

  6. 若要同步處理不同、遺漏或新增的記錄,請按一下 [寫入更新]。

    注意事項注意事項

    在更新目標資料庫時,您可以按一下 [停止寫入目標] 來取消作業。

    即會使用來源中對應記錄的資料來更新目標中選定記錄的資料。

    注意事項注意事項

    如果您選擇更新索引檢視,則當這個動作造成重複的索引鍵插入相同的資料表時,[寫入更新] 作業可能會失敗。

若要使用 Transact-SQL 指令碼來更新目標資料

  1. 比較來源和目標資料庫的資料。 如需詳細資訊,請參閱比較資料庫資料。

    當比較完成之後,[資料比較] 視窗會列出所比較的物件。 如需詳細資訊,請參閱使用參考資料庫中的資料比較和同步處理一個或多個資料表中的資料

  2. (選用) 如果您在目標中有不想要更新的記錄,請在詳細資料窗格中,清除這些記錄的核取方塊,如上一個程序所述。

  3. 按一下 [匯出至編輯器]。

    新的視窗會顯示 Transact-SQL 指令碼,此指令碼會傳播為了讓目標的資料符合來源的資料所必須進行的變更。 系統會為這個新視窗提供一個名稱,如 Server.Database - DataUpdate_Database _1.sql

    此指令碼會反映您在詳細資料窗格中所做的變更。 例如,您可能已經針對 [僅限於目標] 頁面上 [dbo].[Shippers] 資料表的給定資料列清除其核取方塊。 在這種情況下,指令碼就不會更新該資料列。

  4. (選用) 在 [Server.Database - DataUpdate_Database _1.sql] 視窗中編輯此指令碼。

  5. (選用但為建議動作) 備份目標資料庫。

  6. 按一下 [執行 SQL] 或按 F5,更新目標資料庫。

    指定要更新之目標資料庫的連接。

    重要事項重要事項

    根據預設,更新會發生在交易的範圍內。 如果發生錯誤,您可以復原完整的更新。 您可以變更這項行為。 如需詳細資訊,請參閱 HOW TO:設定用來比較資料庫資料的選項

    即會使用來源中對應記錄的資料來更新目標中選定記錄的資料。

請參閱

工作

HOW TO:比較資料庫結構描述

概念

使用參考資料庫中的資料比較和同步處理一個或多個資料表中的資料