다음을 통해 공유


연습: 데이터베이스 및 데이터베이스 프로젝트의 스키마 비교

업데이트: 2007년 11월

이 연습에서는 Visual Studio Team System Database Edition을 사용하여 데이터베이스 프로젝트의 스키마를 데이터베이스의 스키마와 비교합니다.

팀에서 데이터베이스 프로젝트 및 데이터베이스를 사용하는 방법에 따라 한 방향이나 다른 방향으로 스키마 변경 내용을 복사할 수 있습니다. 일반적인 시나리오는 다음과 같습니다.

  • 프로젝트가 소스이고 데이터베이스가 대상인 경우. 데이터베이스 프로젝트를 사용하여 데이터베이스를 개발하거나 유지 관리할 수 있습니다. 프로젝트의 스키마를 변경한 후 스테이징 서버에 호스팅된 데이터베이스로 복사합니다. 나중에 팀에서 데이터베이스를 프로덕션 서버로 배포할 수 있습니다.

    이 연습에서 수행하는 스키마 비교 작업은 스키마 차이로부터 DDL(데이터 정의 언어) 스크립트를 생성합니다. 그런 다음 이 스크립트를 사용하여 데이터베이스 프로젝트의 모두 또는 일부를 데이터베이스에 적용할 수 있습니다. 자세한 내용은 프로젝트에서 데이터베이스로 변경 내용 전파를 참조하십시오.

  • 데이터베이스가 소스이고 프로젝트가 대상인 경우. 프로덕션 데이터베이스의 스키마에 오류가 있거나, 스키마가 오래되어 업데이트가 필요할 수 있습니다. 이 경우 긴급한 업데이트가 데이터베이스에 적용될 수도 있습니다. 프로젝트와 데이터베이스의 동기화를 유지하기 위해 긴급한 업데이트로 인한 스키마 변경 내용을 데이터베이스 프로젝트로 가져올 수 있습니다. 자세한 내용은 방법: 데이터베이스에서 데이터베이스 프로젝트로 업데이트 가져오기를 참조하십시오.

이 연습에서 수행할 작업은 다음과 같습니다.

설치 단계

  1. 데이터베이스 프로젝트를 만듭니다. 빈 새 프로젝트가 시작됩니다.

  2. 데이터베이스 스키마를 프로젝트 스키마와 비교합니다. 이 비교에서 데이터베이스 프로젝트를 소스로 지정하고 데이터베이스를 대상으로 지정합니다. 비교 작업이 완료되면 이 구성을 사용하여 데이터베이스 프로젝트의 스키마 업데이트를 데이터베이스에 쓸 수 있습니다.

    참고:

    소스 데이터베이스에서 대상 데이터베이스 프로젝트로 변경 내용을 전파할 수도 있습니다. 자세한 내용은 방법: 데이터베이스에서 데이터베이스 프로젝트로 업데이트 가져오기를 참조하십시오.

  3. 데이터베이스 스키마를 프로젝트로 가져옵니다. 이제 데이터베이스와 프로젝트에 동일한 스키마가 있습니다.

프로덕션 단계

  1. 데이터베이스 프로젝트에 테이블을 추가합니다. 세 개의 열이 포함된 InternationalShippers라는 테이블을 추가합니다.

  2. 두 스키마를 다시 비교합니다. InternationalShippers 테이블이 데이터베이스 프로젝트에 새 테이블로 나타납니다.

  3. 프로젝트에서 데이터베이스로 변경 내용을 전파합니다. 새 InternationalShippers 테이블을 Northwind 데이터베이스에 전파하도록 선택할 수 있습니다. 이 절차에 따르면 예제 Northwind 데이터베이스의 일부를 덮어쓰게 됩니다.

사전 요구 사항

이 연습을 완료하려면 다음이 필요합니다.

  • Microsoft SQL Server 2000 또는 Microsoft SQL Server 2005

  • Microsoft Visual Studio 2005(Database Edition 포함) 

  • Northwind 데이터베이스

설치 단계

데이터베이스 프로젝트 만들기

데이터베이스 프로젝트를 만들려면

  1. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

    새 프로젝트 대화 상자가 열립니다.

  2. 프로젝트 형식에서 데이터베이스 프로젝트를 확장하고 Microsoft SQL Server를 클릭합니다.

  3. 템플릿에서 SQL Server 2005를 클릭합니다.

  4. 이름에 Northwind_Project를 입력하고 확인을 클릭합니다.

    Northwind_Project가 열리고 솔루션 탐색기에 나타납니다. 프로젝트가 비어 있습니다.

    참고:

    Team Edition for Database Professionals를 사용하여 비어 있지 않은 프로젝트를 만들 수도 있습니다. 자세한 내용은 방법: 데이터베이스 프로젝트 만들기를 참조하십시오.

데이터베이스 스키마를 프로젝트 스키마와 비교

두 스키마를 비교하려면

  1. (선택 사항) 스키마 비교 방법에 영향을 주는 옵션을 구성합니다. 자세한 내용은 옵션(데이터베이스 도구/스키마 비교)방법: 데이터베이스 스키마 비교 옵션 설정을 참조하십시오.

  2. 데이터 메뉴에서 스키마 비교를 가리킨 다음 새 스키마 비교를 클릭합니다.

    새 스키마 비교 대화 상자가 열립니다. 소스 스키마에 Northwind_Project 프로젝트가 나타납니다.

  3. 대상 스키마에서 데이터베이스를 클릭한 다음 Northwind 데이터베이스를 클릭합니다.

    참고:

    데이터베이스 목록이 비어 있으면 새 연결을 클릭합니다. 연결 속성 대화 상자에서 Northwind 데이터베이스가 있는 데이터베이스 서버에 연결한 다음 확인을 클릭합니다. 데이터베이스 목록이 비어 있지 않은 경우 SQL Server 인증을 사용하여 Northwind 데이터베이스에 연결하면 SQL Server에 연결 대화 상자가 나타납니다. 데이터베이스에 연결할 때 사용할 자격 증명을 지정해야 합니다.

  4. 새 스키마 비교 대화 상자에서 확인을 클릭합니다.

    Northwind 데이터베이스의 스키마가 Northwind_Project 프로젝트의 스키마와 비교됩니다. 스키마 비교 창에 비교 결과가 나타납니다. Northwind 데이터베이스에는 있지만 Northwind_Project 프로젝트에 없는 각 개체에 대한 업데이트 작업이 삭제로 표시됩니다.

데이터베이스 스키마를 프로젝트로 가져오기

데이터베이스 스키마를 가져오려면

  1. 보기 메뉴에서 스키마 뷰를 클릭합니다.

    스키마 뷰가 열리고 Northwind_Project 프로젝트의 스키마가 표시됩니다.

  2. Northwind_Project를 마우스 오른쪽 단추로 클릭하고 데이터베이스 스키마 가져오기를 클릭합니다.

    데이터베이스 가져오기 마법사가 열립니다.

  3. 소스 데이터베이스 연결에서 Northwind 데이터베이스를 클릭합니다.

  4. 마침을 클릭합니다.

    데이터베이스의 스키마를 프로젝트로 가져옵니다. 이제 두 스키마가 같습니다.

    참고:

    데이터베이스 프로젝트는 Northwind 데이터베이스에서 많은 속성을 상속합니다. 이러한 속성을 표시하려면 솔루션 탐색기에서 Northwind_Project를 마우스 오른쪽 단추로 클릭하고 속성을 클릭합니다. 가져온 설정에는 프로젝트 설정 페이지의 기본 데이터 정렬, 데이터베이스 속성 페이지의 기타 설정 등이 포함됩니다.

  5. 두 스키마가 같은지 확인하려면 스키마 비교 도구 모음에서 새로 고침을 클릭합니다.

    스키마가 다시 비교됩니다. 동일한 스키마 개체의 경우 업데이트 작업이 건너뛰기로 표시됩니다.

프로덕션 단계

데이터베이스 프로젝트에 테이블 추가

프로젝트에 테이블을 추가하려면

  1. 보기 메뉴에서 스키마 뷰를 클릭합니다.

    스키마 뷰가 열리고 Northwind_Project 프로젝트의 스키마가 표시됩니다.

  2. 스키마 뷰에서 Northwind_Project 노드를 확장합니다.

  3. 테이블을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 테이블을 클릭합니다.

    새 항목 추가 - Northwind_Project 대화 상자가 열립니다.

  4. 템플릿에서 테이블을 클릭합니다.

  5. 이름에 InternationalShippers를 입력한 다음 추가를 클릭합니다.

    InternationalShippers 테이블이 Northwind_Project 프로젝트에 추가됩니다. T-SQL(Transact-SQL) 편집기에 테이블 정의가 나타납니다.

  6. InternationalShippers.table.sql의 SQL 스크립트를 다음으로 변경합니다.

    CREATE TABLE [dbo].[InternationalShippers]
    (
    [ShipperID] [int] NOT NULL IDENTITY(1,1),
    [CompanyName] [nvarchar] (40) NOT NULL,
    [Region] [nvarchar] (40) NOT NULL,
    [Phone] [nvarchar] (24) NULL
    ) ON [PRIMARY]
    
  7. InternationalShippers.table.sql 저장을 클릭합니다.

  8. 스키마 뷰에서 InternationalShippers 테이블을 마우스 오른쪽 단추로 클릭하고 솔루션 탐색기에서 파일 보기를 클릭합니다.

    솔루션 탐색기에서 InternationalShippers.sql 파일이 강조 표시됩니다.

  9. F4 키를 누릅니다.

    속성 창이 나타나고 InternationalShippers.table.sql 파일의 속성이 표시됩니다. 빌드 작업이 빌드로 설정됩니다. 빌드 작업 속성을 빌드로 설정하면 파일에 데이터베이스 개체에 대한 정의가 있으며 구문 분석 및 유효성을 검사해야 합니다.

두 스키마 비교

두 스키마를 비교하려면

  1. 스키마 비교 탭을 클릭하여 가장 최근 비교 결과를 다시 표시합니다.

  2. 스키마 비교 도구 모음에서 새로 고침을 클릭합니다.

    Northwind 데이터베이스의 스키마가 변경된 Northwind_Project 프로젝트의 스키마와 비교됩니다. 스키마 비교 창에 비교 결과가 나타납니다. Northwind_Project 열에 [dbo].[InternationalShippers] 테이블이 나타납니다.

    새 테이블의 상태는 최신이고 해당 업데이트 작업은 만들기입니다. 지금 변경 내용을 전파하면 대상 데이터베이스에 테이블이 생성됩니다. 자세한 내용은 다음 절차를 참조하십시오.

프로젝트에서 데이터베이스로 변경 내용 전파

이 절차에서는 새 InternationalShippers 테이블을 Northwind 데이터베이스로 전파합니다. 자세한 내용은 방법: 데이터베이스 스키마 동기화를 참조하십시오.

주의:

이 절차는 설명 용도로만 제공됩니다. 이 절차의 단계를 따르면 예제 Northwind 데이터베이스의 일부를 덮어쓰게 되므로 Northwind 초기 복사본을 유지할 필요가 없는 경우에만 이 절차를 사용합니다. 또는 Northwind 데이터베이스 복사본으로 이 절차를 수행할 수 있습니다.

변경 내용을 대상 데이터베이스로 전파하려면

  • 스키마 비교 창에서 업데이트 쓰기를 클릭합니다.

    InternationalShippers 테이블에 대한 만들기 업데이트 작업을 포함하여 스키마 비교 창에 나열된 업데이트 작업이 실행됩니다. 이 동기화는 소스 데이터베이스 프로젝트의 스키마와 일치하도록 대상 데이터베이스의 스키마를 변경합니다.

    참고:

    업데이트 작업이 진행 중일 때 데이터 메뉴를 열어 스키마 비교를 가리킨 다음 대상에 쓰기 중지를 클릭하여 해당 작업을 취소할 수 있습니다.

    주의:

    일부 스키마 변경 내용은 트랜잭션할 수 없으므로 업데이트 작업을 취소할 경우 데이터가 손실될 수 있습니다. 예를 들어 대상 데이터베이스의 테이블이 재작성을 위한 준비 과정에서 삭제될 수 있습니다. 이때 업데이트를 취소하면 테이블이 손실될 수 있습니다. 이러한 종류의 데이터 손실이 발생할 경우 스키마를 다시 비교할 수 있습니다.

참고 항목

작업

방법: 두 데이터베이스의 스키마 비교

방법: 두 데이터베이스의 데이터 비교

개념

Database Edition의 용어 개요

기타 리소스

데이터베이스 스키마 비교

데이터베이스 데이터 비교