연습: 격리된 데이터베이스 개발 환경 만들기

이 연습에서는 각 데이터베이스 개발자가 팀의 다른 멤버에 영향을 주지 않고 변경 작업을 수행하고 해당 변경 내용을 테스트할 수 있도록 격리된 개발 환경을 설정합니다. 격리된 데이터베이스 개발 환경은 프로덕션 데이터베이스에 있는 모든 개체에 대한 정의를 포함하는 데이터베이스 프로젝트에 기반을 둡니다. 이 프로젝트를 만들고, 프로덕션 데이터베이스에서 데이터베이스 스키마를 가져오고, 프로젝트 설정을 구성할 수 있습니다. 그런 다음 데이터 생성 계획을 만듭니다. 마지막으로 데이터베이스 프로젝트와 모든 관련 파일을 버전 제어에서 관리하도록 설정하여 팀과 공유합니다.

사용자는 팀의 각 개발자가 자신의 개발 작업을 수행하는 데 사용하는 개발 환경을 정의하기 때문에 이 연습에서 관리 역할을 수행하게 됩니다. 각 개발자는 작업 항목을 마치기 전에 데이터 생성기를 사용하여 실제적이지만 가상인 데이터를 업데이트된 스키마에 포함한 다음 데이터베이스 단위 테스트를 실행하여 스키마 변경 내용이 예상대로 작동하는지 확인합니다. 작업 항목이 완성되면 각 개발자는 자신의 변경 내용을 버전 제어에 체크 인하여 팀에서 해당 변경 내용을 선택할 수 있도록 합니다. 팀의 각 멤버는 변경 내용이 체크 인되기 전에 테스트를 실행하여 전반적인 작업의 위험성을 최소화합니다.

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

  1. 새 데이터베이스 프로젝트 마법사를 사용하여 데이터베이스 프로젝트 만들기

  2. 새 데이터베이스 프로젝트 마법사를 실행하여 데이터베이스 스키마 가져오기, 데이터베이스 프로젝트 속성 지정, 빌드 및 배포 속성 지정

  3. 가져오기 작업의 결과 검사

  4. 프로젝트를 버전 제어에 추가

사전 요구 사항

Visual Studio가 설치되어 있고 SQL Server 2008용 AdventureWorks2008 샘플 데이터베이스에 액세스할 수 있어야 합니다. 프로젝트를 버전 제어에 추가하려면 Visual Studio Team Foundation Server 등의 버전 제어 소프트웨어가 설치되어 있어야 합니다.

AdventureWorks2008 샘플 데이터베이스를 설치하는 방법에 대한 자세한 내용은 CodePlex 웹 사이트의 Microsoft SQL Server Product Samples 페이지를 참조하십시오.

SQL Server 2008 R2 및 AdventureWorks2008R2 데이터베이스도 사용할 수 있습니다. 이 연습에서 AdventureWorks2008R2에 대해 다른 작업을 수행해야 하는 경우 차이점이 설명되어 있습니다.

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

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

    새 프로젝트 대화 상자가 나타납니다.

  2. 설치된 템플릿에서 데이터베이스 노드를 확장하고 SQL Server를 클릭합니다.

    참고

    Visual Studio Professional을 사용하는 경우에는 설치된 템플릿에서 데이터베이스 노드, SQL Server 노드를 차례로 확장한 다음 고급을 클릭합니다.

  3. 템플릿 목록에서 SQL Server 2008 마법사를 클릭합니다.

  4. 이름에 AdvWorksSandbox를 입력합니다.

  5. 기본 위치솔루션 이름을 그대로 사용합니다.

  6. 솔루션용 디렉터리 만들기 확인란이 아직 선택되어 있지 않은 경우 선택합니다.

  7. 소스 제어에 추가 확인란이 아직 선택 취소되어 있지 않은 경우 선택 취소하고 확인을 클릭합니다.

    새 데이터베이스 프로젝트 마법사가 나타납니다.

    다음에는 이 마법사를 사용하여 데이터베이스 프로젝트를 구성하고 초기 데이터베이스 스키마를 가져옵니다.

프로젝트를 구성하고 데이터베이스 스키마를 가져오려면

  1. 시작 페이지를 읽은 후 다음을 클릭합니다.

  2. 사용자 정의 데이터베이스에 대한 변경 내용을 관리할 데이터베이스 프로젝트가 선택되어 있는지 확인합니다.

  3. SQL 스크립트 파일에서 스키마별이 선택되어 있는지 확인하고 다음을 클릭합니다.

    중요

    프로젝트를 만든 다음에는 해당 구성을 변경할 수 없습니다.

  4. 데이터베이스 옵션 설정 페이지의 **데이터베이스 프로젝트에 만들 개체에 사용할 기본 스키마를 지정하십시오.**에서 HumanResources를 입력하고 다음을 클릭합니다.

    참고

    이러한 옵션은 프로젝트가 생성된 다음에 변경할 수 있습니다. 자세한 내용은 방법: 데이터베이스 프로젝트에 대한 데이터베이스 속성 구성을 참조하십시오.

  5. 데이터베이스 스키마 가져오기 페이지에서 기존 스키마 가져오기 확인란을 선택합니다.

  6. 소스 데이터베이스 연결 목록에서 서버 및 AdventureWorks2008 또는 AdventureWorks2008R2 데이터베이스에 해당하는 연결을 클릭합니다. 연결이 아직 없는 경우 새 연결을 클릭하여 만듭니다. 연결을 지정하지 않으면 데이터베이스 프로젝트가 생성되지만 스키마를 가져오지 않습니다.

    참고

    데이터베이스 프로젝트에 아직 데이터베이스 개체가 없는 경우 나중에 데이터베이스 스키마를 가져올 수 있습니다. 자세한 내용은 방법: 데이터베이스 개체 및 설정 가져오기를 참조하십시오.

  7. 개체 및 설정을 가져오기 위한 기본 옵션을 그대로 적용하고 다음을 클릭합니다.

  8. 빌드 및 배포 구성 페이지의 대상 연결에서 편집 단추를 클릭한 다음 개발 환경을 만들 데이터베이스 서버에 대한 연결을 지정합니다.

  9. 대상 데이터베이스 이름에 AdvWorksSandbox가 지정되어 있지 않으면 이 이름을 입력합니다.

  10. 기본 배포 데이터 정렬 목록에서 내 프로젝트의 데이터 정렬 사용을 클릭합니다.

    이렇게 하면 배포 엔진에서 프로젝트를 대상 데이터베이스와 비교할 때 데이터베이스 프로젝트의 데이터 정렬을 사용하게 됩니다.

  11. 데이터가 손실되면 증분 배포 차단 확인란의 선택을 취소합니다.

    이렇게 하면 격리된 개발 환경에 생성된 테스트 데이터만 포함되므로 데이터가 손실되는 것을 허용할 수 있습니다.

  12. 마침을 클릭하여 데이터베이스 프로젝트를 만들고 데이터베이스를 가져옵니다.

    데이터베이스 프로젝트가 만들어집니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다.

  13. 요약 결과를 검토하고 마침을 클릭합니다.

    백그라운드에서는 Visual Studio가 데이터베이스 스키마를 여전히 분석하고 있습니다. 상태 표시줄에는 데이터베이스 스키마가 완전히 분석되기 전에 완료해야 하는 작업 수를 알려 주는 메시지가 나타납니다.

    다음에는 앞에서 만든 데이터베이스 프로젝트를 검사합니다.

결과 프로젝트를 검사하려면

  1. 솔루션 탐색기에서 AdvWorksSandbox 노드를 확장하고 스키마 개체 자식 노드를 확장합니다.

  2. 계층 구조에서 스키마 개체 노드 아래에 있는 하위 노드를 탐색합니다.

    솔루션 탐색기에는 개체를 가져온 데이터베이스의 스키마에 있는 개체를 정의하는 파일이 포함되어 있습니다.

  3. 보기 메뉴에서 데이터베이스 스키마 뷰를 클릭합니다.

  4. 스키마 뷰에서 AdvWorksSandbox 노드를 확장합니다.

  5. 계층 구조에서 AdvWorksSandbox 노드 아래에 있는 하위 노드를 탐색합니다.

    스키마 뷰에는 솔루션 탐색기에 나타나는 파일에 정의되어 있는 개체가 포함됩니다.

  6. 솔루션 탐색기에서 AdvWorksSandbox 노드를 클릭합니다.

  7. 프로젝트 메뉴에서 AdvWorksSandbox 속성을 클릭합니다.

  8. 속성 페이지에서 배포 탭을 클릭합니다.

    참고

    내 프로젝트 설정을 구성할 때 변경하는 모든 배포 설정은 프로젝트 파일(.dbproj)에 저장되고 소스 제어로 체크 인됩니다. 이후 연습에서는 특정 개발자의 환경에 대한 설정을 구성합니다.

  9. 대상 데이터베이스 이름에 AdvWorksSandbox가 지정되어 있지 않으면 이 이름을 입력합니다.

  10. 파일 메뉴에서 선택한 항목 저장을 클릭합니다.

    각 개발자는 자신의 데이터베이스 복사본을 호스팅할 데이터베이스 서버에 대한 연결 문자열을 지정합니다.

프로젝트를 격리된 개발 환경에 배포하려면

  1. 솔루션 탐색기에서 AdvWorksSandbox 노드를 클릭합니다.

  2. 원본 AdventureWorks2008 또는 AdventureWorks2008R2 데이터베이스를 실행하고 있는 데이터베이스 서버에 이 프로젝트를 배포할 경우에는 파일 이름을 변경하여 충돌을 방지해야 합니다. 대신 원본 AdventureWorks2008 또는 AdventureWorks2008R2 데이터베이스가 없는 서버에 배포할 경우 7단계로 이동하십시오.

  3. 스키마 개체 폴더, 데이터베이스 수준 개체 폴더, 저장소 폴더 및 파일 폴더를 차례로 확장합니다.

    AdventureWorks2008_Data.sqlfile.sql, AdventureWorks2008_Log.sqlfile.sql 및 FileStreamDocuments.sqlfile.sql이라는 세 개의 파일이 나타납니다. SQL Server 2008 R2를 사용하는 경우 AdventureWorks2008R2_Data.sqlfile.sql, AdventureWorks2008R2_Log.sqlfile.sql 및 FileStreamDocuments2008R2.sqlfile.sql 파일이 나타납니다.

    참고

    이전 버전의 AdventureWorks에서는 FILESTREAM이 사용되지 않습니다. 이전 버전의 AdventureWorks를 가져오면 7단계로 건너뛸 수 있습니다.

  4. FileStreamDocuments.sqlfile.sql을 두 번 클릭합니다.

    Transact-SQL 편집기에 이 파일이 열립니다.

  5. 다음과 일치하도록 파일의 정의를 수정합니다.

    ALTER DATABASE [$(DatabaseName)]
        ADD FILE (NAME = [FileStreamDocuments], FILENAME = '$(DefaultDataPath)SandboxDocuments') TO FILEGROUP [DocumentFileStreamGroup];
    

    AdventureWorks2008R2를 사용하는 경우 다음 정의를 대신 사용해야 합니다.

    ALTER DATABASE [$(DatabaseName)]
        ADD FILE (NAME = [FileStreamDocuments2008R2], FILENAME = '$(DefaultDataPath)SandboxDocuments') TO FILEGROUP [Document2008R2FileStreamGroup];
    
  6. 파일 메뉴에서 모두 저장을 클릭합니다.

  7. 프로젝트 메뉴에서 AdvWorksSandbox 속성을 클릭합니다.

    프로젝트 속성 창이 나타납니다.

  8. 배포 탭을 클릭합니다.

  9. 배포 작업 목록에서 배포 스크립트(.sql)를 만들고 데이터베이스에 배포를 클릭합니다.

    중요

    배포 작업을 변경하지 않으면 배포 스크립트만 생성되고 대상 데이터베이스에 아무 것도 배포되지 않습니다.

  10. 빌드 메뉴에서 AdvWorksSandbox 배포를 클릭합니다.

    데이터베이스 프로젝트에 대한 빌드 스크립트가 생성된 다음 격리된 개발 환경을 호스팅하도록 선택한 데이터베이스 서버에 배포됩니다. 배포가 완료되면 출력 창에 "배포되었습니다"라는 메시지가 표시됩니다.

    데이터베이스 프로젝트를 정의하고 프로덕션 데이터베이스에서 스키마를 가져왔습니다. 이제 솔루션을 버전 제어 하에 두고 팀 멤버들이 해당 솔루션을 사용하게 만들 수 있습니다.

프로젝트를 팀에서 사용할 수 있게 만들기

프로젝트를 버전 제어에 추가하려면

  1. 솔루션 탐색기에서 AdvWorksSandbox 노드를 클릭합니다.

  2. 파일 메뉴에서 소스 제어를 가리킨 다음 소스 제어에 솔루션 추가를 클릭합니다.

    이 부분에서 사용자는 설치된 버전 제어 소프트웨어와 상호 작용합니다. 이 연습에서는 프로젝트를 Team Foundation Server에 추가하는 단계를 제공합니다. 다른 버전 제어 소프트웨어를 사용하려면 해당하는 단계로 바꿉니다. Team Foundation Server를 사용하는 경우에는 Team Foundation Server에 연결 대화 상자가 나타납니다.

  3. Team Foundation Server에 연결에서 솔루션을 추가할 팀 프로젝트가 발견된 서버를 클릭합니다.

    참고

    데이터베이스 프로젝트를 추가할 수 있는 팀 프로젝트가 없는 경우 프로젝트 계획 및 추적을 참조하십시오.

  4. 팀 프로젝트에서 데이터베이스 프로젝트를 추가할 팀 프로젝트를 클릭하고 확인을 클릭합니다.

    소스 제어에 AdvWorksSandbox 솔루션 추가 대화 상자가 나타납니다.

  5. 확인을 클릭하여 기본값을 적용합니다.

    데이터베이스 프로젝트와 해당 파일이 버전 제어에서 관리됩니다. 처음에는 데이터베이스 프로젝트와 해당 파일이 체크 아웃되어 있으므로 다른 팀 멤버가 이 프로젝트와 파일을 액세스할 수 있으려면 체크 인해야 합니다.

  6. 보기 메뉴에서 다른 창을 가리킨 다음 보류 중인 변경 내용을 클릭합니다.

    보류 중인 변경 내용 창이 나타납니다.

  7. 설명 필드에 "초기 데이터베이스 프로젝트 만들기, 스키마 가져오기 및 데이터 생성"을 입력합니다.

  8. 보류 중인 변경 내용 창의 도구 모음에서 체크 인을 클릭합니다.

    데이터베이스 프로젝트와 이 프로젝트에 포함된 파일이 체크 인될 때 체크 인 진행률 대화 상자가 나타납니다. 솔루션 탐색기의 아이콘이 업데이트되어 파일이 버전 제어에 체크 인되었다는 것을 나타냅니다.

다음 단계

데이터베이스 프로젝트가 버전 제어에 체크 인되었으면 다음 단계로는 팀에서 변경 작업을 수행하기 전에 몇 가지 품질 보증 조치를 마련합니다. 다음의 소개 연습 항목인 연습: 격리된 개발 환경을 위한 기준 설정에서는 단위 테스트를 만들어 격리된 데이터베이스 개발에서 빌드, 배포 및 실행합니다.

참고 항목

작업

방법: 데이터베이스 및 서버 프로젝트 만들기

개념

팀 데이터베이스 개발 시작

데이터베이스 빌드 및 배포 개요

데이터베이스 프로젝트 설정 개요

변경 기록

날짜

변경 내용

이유

SQL Server 2008 R2 및 AdventureWorks2008R2에 대한 지원이 추가되었습니다.

SP1 기능 변경