연습: 두 데이터베이스의 데이터 비교
이 항목은 다음 언어에 적용됩니다.
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
이 연습에서는 두 데이터베이스의 데이터를 비교하고 차이를 통해 DML(데이터 조작 언어) 스크립트를 생성한 다음 이 스크립트를 사용하여 소스의 데이터로 대상을 채웁니다.
이 연습에서는 다음 절차를 따릅니다.
소스 데이터베이스에 데이터를 추가합니다. 이 절차에서는 Transact-SQL 편집기를 사용하여 소스 데이터베이스의 Customer 테이블에 데이터를 추가합니다.
두 데이터베이스의 데이터를 비교합니다. 이 절차에서는 데이터의 차이를 확인하여 표에 표시하고 이러한 차이점을 표현하는 DML 스크립트를 생성합니다.
대상 데이터베이스를 업데이트합니다. 이 절차에서는 소스와 일치하도록 대상을 업데이트할 수 있는 두 가지 방법을 보여 줍니다.
사전 요구 사항
이 연습을 완료하려면 먼저 다음 제품에 액세스할 수 있어야 합니다.
SQL Server 2008
Visual Studio Premium 또는 Visual Studio Ultimate
이 연습을 시작하려면 먼저 연습: 두 데이터베이스의 스키마 비교에 나와 있는 절차를 따라야 합니다. 이 연습을 마치면 두 개의 데이터베이스가 만들어집니다.
소스인 CompareProjectDB에는 원래 구조체만 있고 데이터는 없습니다. 프로젝트를 사용자 지정하여 배포 후 스크립트의 일부로 데이터베이스에 데이터를 삽입합니다.
대상인 EmptyDB는 스키마 비교 연습에서 만든 데이터베이스입니다. 이 연습에서는 EmptyDB에 AdventureWorks2008 데이터베이스의 스키마만 적용했으므로 EmptyDB에 데이터가 없습니다.
소스 및 대상 데이터베이스의 데이터를 읽을 수 있는 권한이 있어야 합니다.
소스 데이터베이스에 데이터 추가
Transact-SQL 편집기를 사용하여 소스 데이터베이스에 데이터를 추가하려면
데이터 메뉴에서 Transact-SQL 편집기를 가리킨 다음 새 쿼리 연결을 클릭합니다.
CompareProjectDB가 있는 서버에 대한 연결을 지정합니다.
Transact-SQL 편집기에서 다음 Transact-SQL 문을 입력합니다.
use CompareProjectDB; go delete from [Sales].[Customer]; go exec [Sales].[uspNewCustomer] 'Ken J. Sánchez' exec [Sales].[uspNewCustomer] 'Terri Lee Duffy' exec [Sales].[uspNewCustomer] 'Roberto Tamburello' exec [Sales].[uspNewCustomer] 'Rob Walters' exec [Sales].[uspNewCustomer] 'Gail Erickson' exec [Sales].[uspNewCustomer] 'Jossef Goldberg' exec [Sales].[uspNewCustomer] 'Dylan Miller' exec [Sales].[uspNewCustomer] 'Diane Margheim' exec [Sales].[uspNewCustomer] 'Gigi Matthew' go
Transact-SQL 편집기 도구 모음에서 SQL 실행을 클릭합니다.
이러한 Transact-SQL 문은 [Sales].[Customer] 테이블에서 기존 데이터를 제거한 다음 [Sales].[uspNewCustomer] 저장 프로시저를 사용하여 9명의 고객을 추가합니다. 이제 소스 데이터베이스에 데이터가 들어 있으므로 소스 데이터베이스를 대상 데이터베이스와 비교할 수 있습니다.
두 데이터베이스의 데이터 비교
두 데이터베이스의 데이터를 비교하려면
데이터 메뉴에서 데이터 비교를 가리킨 다음 새 데이터 비교를 클릭합니다.
새 데이터 비교 마법사가 나타납니다. 또한 데이터 비교 창이 배경에 열리며 Visual Studio에서 DataCompare1과 같은 이름을 해당 창에 자동으로 할당합니다.
소스 데이터베이스 목록에서 CompareProjectDB 데이터베이스에 대한 연결을 클릭합니다.
소스 데이터베이스 목록이 비어 있는 경우 새 연결을 클릭합니다. 연결 속성 대화 상자에서 CompareProjectDB 데이터베이스가 있는 서버와 해당 데이터베이스에 연결할 때 사용할 인증 형식을 지정합니다. 그런 다음 확인을 클릭하여 연결 속성 대화 상자를 닫고 새 데이터 비교 마법사로 돌아갑니다.
대상 데이터베이스 목록에서 Server.EmptyDB.dbo를 클릭합니다.
대상 데이터베이스 목록이 비어 있는 경우 새 연결을 클릭합니다. 연결 속성 대화 상자에서 EmptyDB 데이터베이스가 있는 서버와 해당 데이터베이스에 연결할 때 사용할 인증 형식을 지정합니다. 그런 다음 확인을 클릭하여 연결 속성 대화 상자를 닫고 새 데이터 비교 마법사로 돌아갑니다.
비교 결과에 나타나는 레코드를 제한하려면 데이터 비교 옵션을 지정합니다. 이 연습에서는 기본값을 그대로 적용하여 모든 레코드를 표시합니다.
다음을 클릭합니다.
새 데이터 비교 마법사의 두 번째 페이지에서 비교할 테이블과 뷰를 구체적으로 선택할 수 있습니다. 데이터베이스의 모든 테이블은 테이블 노드에 나열됩니다. 개별 테이블을 확장하여 테이블에 포함된 열을 표시할 수 있습니다. 기본적으로는 모든 테이블 및 열이 표시되고 비교됩니다. 목록의 각 테이블 또는 뷰에 대해 레코드를 비교하는 데 사용되는 키가 나타납니다. 테이블과 뷰는 특정 조건을 충족해야 비교할 수 있습니다. 자세한 내용은 하나 이상의 테이블에 있는 데이터를 참조 데이터베이스에 있는 데이터와 비교하고 동기화를 참조하십시오.
참고
비교할 테이블과 뷰를 사용자 지정하지 않으려면 다음 대신 마침을 클릭합니다.
비교를 시작하려면 마침을 클릭합니다.
비교가 시작됩니다.
참고
데이터 비교 도구 모음에서 중지를 클릭하여 진행 중인 데이터 비교를 중지할 수 있습니다.
비교가 완료되면 두 데이터베이스 간의 데이터 차이가 데이터 비교 창의 표에 나타납니다. 이러한 결과를 보는 방법에 대한 자세한 내용은 다음 절차를 참조하십시오.
이제 소스의 데이터와 일치하도록 대상의 데이터를 업데이트할 수 있습니다. 자세한 내용은 대상 데이터베이스 업데이트를 참조하십시오.
데이터 비교 결과를 보려면
[Sales].[Customer] 행을 클릭합니다.
레코드 뷰 창에서 탭 이름이 다른 레코드(0), 소스에서만(9), 대상에서만(0), 동일한 레코드(0) 등과 같이 각 형식의 레코드 수를 반영하도록 변경됩니다.
소스에서만(9) 탭을 클릭합니다.
소스에서만(9) 탭에서 각 행 및 열은 [Sales].[Customer] 테이블의 행 또는 열에 해당합니다.
참고
이러한 탭을 사용하여 대상으로 전파되는 데이터를 제어할 수 있습니다.
대상 업데이트
데이터 비교 창에서 직접 또는 Transact-SQL 편집기를 사용하여 대상의 데이터를 업데이트할 수 있습니다. 이 단원에서는 두 가지 옵션에 대해 모두 설명합니다.
데이터를 비교하면 차이가 데이터 비교 창에 표 형식으로 나타납니다. 개체 열에 있는 각 테이블 또는 뷰의 확인란은 해당 개체가 업데이트 작업에 포함될 것인지 여부를 나타냅니다. 열은 데이터 비교가 나타내는 형식의 변경 내용을 보여 줍니다. 이 경우 기본 개체를 제외한 대상이 비어 있기 때문에 소스에서만 열에 적용될 변경 내용이 표시됩니다.
데이터 비교 옵션을 사용하여 업데이트 쓰기
데이터 비교 창에 나타나는 업데이트 작업을 사용하여 대상의 데이터를 업데이트하려면 다음 절차를 따릅니다.
- 대상 데이터베이스 업데이트
Transact-SQL 편집기를 사용하여 업데이트 쓰기
업데이트 스크립트를 내보내고 검사하며 변경한 다음 이를 사용하여 대상을 변경하려면 다음 절차를 사용합니다.
- 동기화 스크립트 검사 및 실행
대상 데이터베이스 업데이트
대상을 업데이트하려면
데이터 비교 창에서 **[Sales].[Customer]**를 클릭합니다.
세부 정보 창에서 소스에서만을 클릭합니다.
처음 두 행은 Ken J. Sánchez와 Terri Lee Duffy라는 고객에 대한 행입니다.
세부 정보 창의 상태 표시줄은 소스에서 누락된 레코드 수와 대상에서 삭제될 레코드 수를 나타냅니다. 이 두 숫자는 일치합니다.
Terri Lee Duffy에 대한 행에 있는 확인란의 선택을 취소합니다.
세부 정보 창의 상태 표시줄에서 삽입될 레코드 수가 하나 줄어들게 되므로 대상에서 누락된 레코드 수와 더 이상 일치하지 않게 됩니다.
데이터 비교 창에서 업데이트 쓰기를 클릭합니다.
데이터 비교 창에 나열되었던 업데이트 작업이 구현됩니다. 이 동기화로 인해 소스와 일치하도록 대상이 변경됩니다.
참고
대상이 업데이트되는 동안 대상에 쓰기 중지를 클릭하여 작업을 취소할 수 있습니다.
동기화 스크립트 검사 및 실행
동기화 스크립트를 검사하려면
데이터 비교 도구 모음에서 편집기로 내보내기를 클릭합니다.
온라인 모드에서 Transact-SQL 편집기가 열리고 Transact-SQL 스크립트가 표시됩니다. 이 창에는 DataUpdate_EmptyDB_1.sql과 같은 이름이 지정됩니다. 이 창에 대한 쓰기 권한이 있으므로 스크립트를 변경할 수 있습니다. 업데이트 스크립트를 저장하려면 저장을 클릭합니다.
두 데이터베이스의 데이터를 동기화하려면 SQL 실행을 클릭하거나 F5 키를 눌러 이 스크립트를 실행합니다.
참고
스크립트가 실행되는 동안 쿼리 실행 취소를 클릭하거나 Alt+Break를 눌러 작업을 취소할 수 있습니다.