데이터베이스를 빌드하여 격리된 개발 환경에 배포

샌드박스라고도 하는 격리된 개발 환경에서는 팀 구성원들의 개별적인 변경 내용이 서로 충돌하게 되는 위험 없이 데이터베이스 코드를 업데이트하고 빌드하고 배포할 수 있습니다. 테스트 데이터를 생성하고 데이터베이스 단위 테스트를 실행한 후 자신이 변경한 코드를 스테이징 또는 테스트 서버에 배포하면 해당 코드가 다른 개발자의 코드와 병합됩니다. 데이터베이스 프로젝트를 배포하기 전에 이 프로젝트를 스테이징 또는 프로덕션 서버 대신 격리된 개발 환경에 배포할지 여부에 따라 프로젝트 속성을 구성합니다.

로컬 배포를 위한 데이터베이스 프로젝트 구성

배포 속성을 구성할 때 격리된 개발 환경 고유의 대상 데이터베이스 연결, .deploymentconfig 파일 및 .sqlcmdvars 파일을 식별할 수 있습니다. 데이터베이스 프로젝트의 배포 속성에서는 격리된 개발 환경의 설정을 데이터베이스 프로젝트에 저장된 배포 설정과 다르게 구성할 수 있습니다. 따라서 격리된 개발 데이터베이스에 대한 대상 데이터베이스 연결, 다른 .deploymentconfig 파일 및 다른 .sqlcmdvars 파일을 제공할 수 있습니다.

배포 구성 세부 사항

격리된 개발 환경에 프로젝트를 배포하기 전에 다음 문제를 해결해야 합니다.

  • 대부분의 경우 개발 환경은 대상 스테이징 또는 프로덕션 환경과 일치해야 하기 때문에 데이터베이스 프로젝트의 데이터 정렬을 사용해야 할 수 있습니다.

  • 유지해야 하는 프로덕션 데이터가 없기 때문에 데이터베이스를 항상 다시 만들어야 할 수 있습니다.

  • 개발 환경을 대상 스테이징 또는 프로덕션 환경과 일치하게 설정하기 위해 데이터베이스 속성을 배포해야 할 수 있습니다.

  • 배포할 때마다 데이터베이스를 다시 만드는 경우 백업을 수행하면 배포의 오버헤드가 커지고 다른 이점은 없기 때문에 데이터베이스를 백업하지 않을 수 있습니다.

  • 프로덕션 데이터를 사용하여 작업하지 않고 테스트 데이터를 생성하기 때문에 데이터 손실이 발생할 수 있는 경우 배포를 차단하지 않을 수 있습니다. 현재 수행하고 있는 변경 작업으로 인해 데이터 손실이 발생하는 것을 원치 않는 경우에는 배포를 차단하여 예상되는 결과를 테스트할 수 있습니다.

  • 해당 데이터베이스에 있지만 데이터베이스 프로젝트에는 없는 개체에 대해 DROP 문을 생성하지 않을 수 있습니다. 데이터베이스 프로젝트에서 불완전한 개체를 일시적으로 제외한 경우나 유지하려는 개체에 대한 프로토타입이 대상 데이터베이스에 있는 경우가 이에 해당됩니다.

SQL 명령 변수

격리된 개발 환경에 배포할 때 변수를 해당 환경에 적절한 값으로 설정할 수 있습니다. 예를 들어 개발 환경에서 Service Broker 또는 서비스 인증서에 대해 스테이징 또는 프로덕션 환경의 값과는 다른 값을 사용해야 할 수 있습니다. 격리된 개발 환경에 다른 .sqlcmdvars 파일을 지정하면 배포 대상을 변경할 때 해당 변수의 값을 변경하지 않아도 됩니다. 이 방법을 사용하면 MSBuild 변수에 대해 구성별 값을 갖도록 .sqlcmdvars 파일을 정의해야 할 필요도 없습니다. 배포할 각 구성에 대해 서로 다른 .sqlcmdvars 파일을 사용할 수 있습니다.

서버 프로젝트 배포

데이터베이스 프로젝트를 배포하면 해당 데이터베이스의 개체 및 설정도 배포됩니다. 서버 프로젝트를 배포하면 마스터 데이터베이스에 정의된 개체도 배포되지만 서버 설정은 변경되지 않습니다. 서버 설정을 무시하거나, 대상 서버의 일부 또는 모든 설정 값이 서버 프로젝트에 지정한 값과 일치하는지 확인할 수 있습니다.

서버 프로젝트와 데이터베이스 프로젝트를 배포하는 절차는 설정 처리 방법에 차이가 있다는 점을 제외하고는 모두 동일합니다.

역할 배포

데이터베이스를 배포할 모든 서버에 이 데이터베이스에서 사용하는 역할을 배포해야 합니다. 하지만 개발 환경에서는 각 역할과 연결해야 하는 사용자 수를 제한할 수 있습니다. 일반적으로 각 역할에 대해 한 명 이상의 사용자를 연결할 수 있지만 격리된 개발 환경에 전체 사용자 집합을 배포할 필요는 없습니다.

명령줄 배포

Visual Studio가 설치되지 않은 컴퓨터라도 다음 필수 구성 요소가 설치되어 있으면 명령 프롬프트에서 데이터베이스 프로젝트를 배포할 수 있습니다.

  • Microsoft .NET Framework 버전 4

  • SMO(SQL Server Management Objects)

    이러한 개체는 SQL Server가 설치된 컴퓨터에 설치해야 합니다.

이러한 필수 구성 요소 외에도 다음 파일을 USB(범용 직렬 버스) 드라이브에 복사했다가 해당 컴퓨터로 전송해야 합니다.

  • 데이터베이스 프로젝트의 빌드 출력(디버그 또는 정식 버전)

  • Visual Studio의 배포 폴더 내용

    이 폴더는 일반적으로 [Program Files]\VSTSDB\Deploy에 있습니다.

  • SQL Server Compact Edition의 어셈블리

필수 구성 요소를 설치하고 파일을 전송한 후 .dbschema 파일 형식으로 데이터베이스 프로젝트를 대상 데이터베이스에 배포할 수 있습니다.

참조 데이터

데이터베이스 프로젝트의 배포 후 스크립트에 문을 추가하여 하나 이상의 테이블에 참조 데이터를 채울 수 있습니다. 자세한 내용은 데이터베이스를 배포할 때 테이블에 참조 데이터 추가를 참조하십시오.

하나 이상의 테이블을 동기화하려는 경우 배포된 데이터베이스를 참조 데이터가 포함된 데이터베이스와 비교할 수도 있습니다. 자세한 내용은 하나 이상의 테이블에 있는 데이터를 참조 데이터베이스에 있는 데이터와 비교하고 동기화를 참조하십시오.

일반 작업

다음 표에서는 이 시나리오를 지원하는 일반적인 작업에 대한 설명과 해당 작업을 성공적으로 완료하는 방법에 대한 자세한 내용을 볼 수 있는 링크를 보여 줍니다.

Task

지원 항목

빌드 및 배포 시작: 첫 번째 데이터베이스 프로젝트를 구성, 빌드 및 배포하기 전에 팀 환경에서 데이터베이스 프로젝트를 사용하는 방법을 이해할 수 있습니다. 빌드 및 배포 프로세스를 보다 정확하게 이해하고 프로젝트의 빌드 및 배포 방식을 제어하는 모든 속성 및 설정에 대해 알아볼 수도 있습니다.

실습 항목: 기초 연습을 마치면 격리된 개발 환경을 만드는 단계부터 기준을 설정하고 반복적인 개발 작업을 수행하는 단계에 이르기까지 전체 프로세스에 대해 빠르게 배울 수 있습니다.

완료된 개체만 배포: 배포하거나 테스트할 준비가 되지 않은 데이터베이스 개체에 대한 정의가 들어 있는 파일을 제외할 수 있습니다.

프로젝트에 대한 빌드 구성: 데이터베이스 프로젝트를 빌드하는 방식을 제어하는 설정을 구성할 수 있습니다. 예를 들어 경고를 오류로 처리할지를 지정할 수 있습니다.

프로젝트에 대한 배포 구성:

  • 대상 데이터베이스, 배포 세부 사항이 포함된 파일 및 배포에 영향을 주는 변수가 포함된 파일에 구성을 연결하여 빌드 구성에 대한 배포를 구성할 수 있습니다.

  • 배포 세부 사항이 포함된 파일(.deploymentconfig)을 수정하여 배포 세부 사항을 제어할 수 있습니다.

  • 각 배포에서 서로 다른 서비스 브로커나 서비스 인증서를 사용하도록 변수를 사용자 지정할 수 있습니다.

  • 프로젝트를 배포할 때 데이터베이스 및 서버 속성을 업데이트할지 여부와 사용해야 하는 속성 값을 제어할 수 있습니다.

참조 또는 조회 테이블 채우기: 데이터베이스 프로젝트를 배포할 때 테이블에 참조 데이터를 추가할 수 있습니다. 운송업체 정보와 같이 자주 변경되지 않는 데이터가 들어 있는 테이블에 대해 이 작업을 수행할 수도 있습니다.

데이터베이스 프로젝트 빌드: Visual Studio에서 또는 명령 프롬프트에서 MSBuild를 사용하여 데이터베이스 프로젝트를 빌드할 수 있습니다. 최대 오류 또는 경고 수를 구성하고 경고를 무시하려는 경우 경고를 표시하지 않을 수 있습니다. 데이터베이스 프로젝트가 빌드되기 직전이나 직후에 빌드의 일부로 작업을 수행할 수 있습니다.

데이터베이스 프로젝트 배포: Visual Studio에서 데이터베이스 프로젝트를 배포할 수 있을 뿐 아니라 MSBuild를 사용하거나 명령줄 도구인 VSDBCMD를 사용하여 대상 데이터베이스 또는 서버를 업데이트하는 방법으로 데이터베이스 프로젝트를 배포할 수도 있습니다. 변경 내용을 데이터베이스 프로젝트에 체크 인하기 전에 전체 팀 빌드 및 배포가 성공적인지 테스트할 수도 있습니다.

문제 해결: SQL CLR(공용 언어 런타임) 프로젝트 및 어셈블리의 이름을 바꿀 때 발생하는 문제와 같이 가장 일반적인 빌드 및 배포 문제를 해결하는 방법에 대해 자세히 알아보십시오.

다음 단계

변경 내용을 체크 인하기 전에 데이터베이스 단위 테스트를 실행하여 데이터베이스가 의도한 대로 작동하는지 확인하는 것이 좋습니다. 작성한 코드를 확인하기 위해 추가 테스트를 작성할 수 있습니다. 필요한 경우 프로젝트를 배포하고 테스트를 실행할 때 테스트 데이터를 생성할 수도 있습니다. 자세한 내용은 단위 테스트를 사용하여 데이터베이스 코드 확인을 참조하십시오.

관련 시나리오

데이터베이스를 빌드하여 스테이징 환경 또는 프로덕션 환경에 배포

데이터베이스 팀 개발 시작

다른 데이터베이스를 참조하는 데이터베이스의 팀 개발 시작

공유 서버 개체를 참조하는 데이터베이스의 팀 개발 시작

SQLCLR 개체를 참조하는 데이터베이스의 팀 개발 시작

참고 항목

개념

데이터베이스 개체와 서버 개체 만들기 및 수정

팀 데이터베이스 개발 시작