How to: Compare and Synchronize the Data of Two Databases
This topic applies to:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
By using Visual Studio, you can compare the data that is contained in two databases. The databases that you compare are known as the source and the target.
Note
Database projects and Data-tier application projects contain no data. Therefore, neither type of project can be the source or the target in a data comparison. Similarly, .dbschema files and .dacpac also contain no data and cannot be the source or target in a data comparison.
As the data is compared, a Data Manipulation Language (DML) script is generated, which you can use to synchronize the differing databases by updating some or all of the data on the target database. When the data comparison finishes, its results appear in the Data Compare window of Visual Studio.
After the comparison finishes, you can take other steps:
You can view the differences between the two databases. For more information, see Viewing Data Differences.
You can update part or all of the target to match the source. For more information, see Synchronizing Database Data.
For more information, see Compare and Synchronize Data in One or More Tables with Data in a Reference Database.
Note
You can also compare the schema of two databases or of two versions of the same database. For more information, see How to: Compare Database Schemas.
Comparing Database Data
To compare data by using the New Data Comparison Wizard
On the Data menu, point to Data Compare, and then click New Data Comparison.
The New Data Comparison wizard appears. Also, the Data Compare window opens, and Visual Studio automatically assigns it a name such as DataCompare1.
Identify the source and target databases.
If the Source Database list or the Target Database list is empty, click New Connection. In the Connection Properties dialog box, identify the server on which the database resides and the type of authentication to use when connecting to the database. Then, click OK to close the Connection Properties dialog box and return to the Data Compare wizard.
On the first page of the Data Compare wizard, verify that the information for each database is correct, specify which records you want to include in the results, and then click Next. The second page of the Data Compare wizard appears and shows a hierarchical listing of the tables and views in the database.
Select the check boxes for the tables and views that you want to compare. Optionally, expand the nodes for database objects, and then select the check boxes for columns within those objects that you want to compare.
Note
Tables and views must meet two criteria to appear in the listing. First, the schemas of the objects must match between the source and target databases. Second, only tables and views that have a primary key, a unique key, or an index appear in the list. If no tables or views meet both criteria, the list will be empty.
If more than one key is present, you can use the Comparison Key column to specify the key on which to base the data comparison. For example, you can specify whether to base the comparison on the primary key column or on another (uniquely identifiable) key column.
Click Finish.
The comparison starts.
Note
You can stop a data comparison operation that is in progress by opening the Data menu, clicking Data Compare, and then clicking Stop Data Comparison.
When the comparison is finished, you can view the data differences between the two databases. You can also update part or all the data in the target database to match the data in the source database.
To compare data by using the Visual Studio automation model
Open the View menu, point to Other Windows, and click Command Window.
In the Command Window, type the following command:
Data.NewDataComparison /SrcServerName sServerName /SrcDatabaseName sDatabaseName /SrcUserName sUserName /SrcPassword sPassword /SrcDisplayName sDisplayName /TargetServerName tServerName /TargetDatabaseName tDatabaseName /TargeUserName tUserName /TargetPassword tPassword /TargetDisplayName tDisplayName
Replace the placeholders (sServerName, sDatabaseName, sUserName, sPassword, sDisplayName, tServerName, tDatabaseName, tUserName, tPassword, and tDisplayName) with the values for your source and target databases.
If you do not specify a source and a target, the New Data Comparison dialog box appears. For more information about the parameters for the Data.NewDataComparison command, see Automation Command Reference for Database Features of Visual Studio.
The data in the specified source and target databases are compared. The results appear in a Data Compare session. For more information about how to view results or synchronize the data, see Viewing Data Differences and Synchronizing Database Data.
Viewing Data Differences
After you compare the data in two databases, Data Compare lists each database object that you compared and its status. You can also view results for the records within each object, grouped by status. For more information about the status designations, see Compare and Synchronize Data in One or More Tables with Data in a Reference Database.
After you view the differences, you can update the target to match the source for some or all of the objects or records that are different, missing, or new. For more information, see Synchronizing Database Data.
To view data differences
Compare the data in a source and a target database. For more information, see Compare Database Data.
(Optional) Do one or both of the following:
By default, the results for all objects appear, regardless of their status. To display only those objects that have a particular status, click an option in the Filter list.
To view results for records within a particular object, click the object in the main results pane, and then click a tab in the records view pane. Each tab displays all records within that object that have a particular status: different, only in source, only in target, and identical. Data appears by record and column.
Synchronizing Database Data
After you compare the data in two databases, you can synchronize them by updating all or part of the target to match the source. You can compare the data in two kinds of database objects: tables and views.
To update target data by using the Write Updates command
Compare the data in a source and a target database. For more information, see Compare Database Data.
After the comparison finishes, the Data Compare window lists results for the objects that were compared. Four columns (named Different Records, Only in Source, Only in Target, and Identical Records) display information about objects that were not identical. For each such object, these columns display how many records were found to be different, and how many records an update operation would change. Those two numbers match at first, but in step 4 you can change which objects to update.
For more information, see Compare and Synchronize Data in One or More Tables with Data in a Reference Database.
In the table of the Data Compare window, click a row.
The details pane shows results for the records in the database object that you clicked. Records are grouped by status onto tabs, which you can use to specify the data that will be propagated from the source to the target.
In the details pane, click a tab whose name contains a number other than zero (0).
The Update column of the Only in Target table contains check boxes that you can use to select rows to be updated. By default, each check box is selected.
Clear check boxes for records in the target that you do not want to update with data from the source.
When you clear a check box, you reduce the number of records to update, and the display changes to reflect your actions. This number appears in the status line of the details pane and in the corresponding column in the main results pane, as described in step 1.
(Optional) Click Export to Editor.
A Transact-SQL editor window opens and shows the Data Manipulation Language (DML) script that would be used to update the target.
To synchronize records that are different, missing, or new, click Write Updates.
Note
While the target database is being updated, you can cancel the operation by clicking Stop Writing to Target.
The data of the selected records in the target is updated with the data from the corresponding records in the source.
Note
If you opt to update indexed views, the Write Updates operation might fail if this action causes duplicate keys to be inserted into the same table.
To update target data by using a Transact-SQL script
Compare the data in a source and a target database. For more information, see Compare Database Data.
After the comparison finishes, the Data Compare window lists the objects that were compared. For more information, see Compare and Synchronize Data in One or More Tables with Data in a Reference Database.
(Optional) In the details pane, clear the check boxes for records in the target that you do not want to update, as described in the previous procedure.
Click Export to Editor.
A new window shows the Transact-SQL script that would propagate the changes necessary to make the data in the target match the data in the source. The new window is given a name such as Server.Database - DataUpdate_Database _1.sql.
This script reflects changes that you have made in the details pane. For example, you might have cleared a check box for a given row in the Only in Target page for the [dbo].[Shippers] table. In that case, the script would not update that row.
(Optional) Edit this script in the Server.Database - DataUpdate_Database _1.sql window.
(Optional but recommended) Back up the target database.
Click Execute SQL or press F5 to update the target database.
Specify a connection to the target database that you want to update.
Important
By default, the updates occur within the scope of a transaction. If errors occur, you can roll back the whole update. You can change this behavior. For more information, see How to: Set Options for Comparing Database Data.
The data of the selected records in the target is updated with the data from the corresponding records in the source.
See Also
Tasks
How to: Compare Database Schemas
Concepts
Compare and Synchronize Data in One or More Tables with Data in a Reference Database