다음을 통해 공유


방법: 새 데이터베이스 또는 기존 데이터베이스로 변경 내용 배포

업데이트: 2010년 6월

데이터베이스 프로젝트를 변경한 후에는 이러한 변경 내용을 데이터베이스 서버로 배포해야 합니다. 데이터베이스 프로젝트를 배포할 때 데이터베이스 프로젝트에 정의한 스키마와 대상 스키마가 비교되어 스키마를 동기화하기 위해 수행해야 하는 일련의 작업이 확인됩니다. 이러한 작업은 배포 전 스크립트 및 배포 후 스크립트와 결합되어 전체 배포 스크립트를 구성합니다. 대상 데이터베이스가 없거나 항상 데이터베이스를 다시 만들도록 선택한 경우 .dbschema 파일에 정의된 스키마를 사용하여 데이터베이스가 만들어집니다. 새 데이터베이스를 만들 때 같은 이름의 데이터베이스가 이미 있는 경우 배포 스크립트에서 기존 데이터베이스를 삭제하려고 시도합니다. 마지막 빌드 또는 배포 이후에 데이터베이스 프로젝트, 해당 속성 또는 내용이 변경된 경우, 프로젝트를 빌드할 때 최신 .dbschema 파일을 생성합니다.

프로덕션 환경에서는 대상 데이터베이스에 직접 배포하지 않을 수 있습니다. 대신 배포 스크립트(.SQL 파일)를 생성하고, 해당 스크립트를 검토하여 선택적으로 업데이트한 다음, Transact-SQL 편집기를 사용하여 배포합니다. 또는 SQL Server Management Studio와 같은 도구를 사용할 수도 있습니다.

VSDBCMD.EXE 도구를 사용하여 데이터베이스를 배포할 수도 있습니다. 데이터베이스를 배포하는 데 사용할 .dbschema 파일을 지정할 수 있습니다. Visual Studio가 설치되어 있지 않은 컴퓨터에서 VSDBCMD를 사용하여 배포할 수 있습니다. 자세한 내용은 방법: VSDBCMD.EXE를 사용하여 명령 프롬프트에서 데이터베이스 배포 준비를 참조하십시오.

중요

데이터베이스 프로젝트를 배포하기 전에 프로젝트 속성을 설정하여 대상 데이터베이스 연결과 데이터베이스 이름을 지정해야 합니다. 새 데이터베이스 프로젝트 마법사를 사용하여 데이터베이스 프로젝트를 생성한 경우 이미 프로젝트 속성을 지정했을 수도 있습니다. 언제든지 프로젝트 속성을 변경할 수 있습니다. 자세한 내용은 방법: 데이터베이스 프로젝트에 대한 데이터베이스 속성 구성을 참조하십시오.

필요한 권한

데이터베이스 프로젝트를 배포하려면 새 배포에 대한 데이터베이스를 만들고 해당 데이터베이스의 스키마 개체를 생성, 수정 및 삭제할 수 있는 권한이 있어야 합니다.

단일 데이터베이스에 배포

Visual Studio를 사용하거나 명령 프롬프트에서 또는 Transact-SQL 편집기에서 배포 스크립트를 실행하여 데이터베이스를 배포할 수 있습니다. Visual Studio에 있는 Transact-SQL 편집기를 사용하거나 SQL Server Management Studio와 같은 도구를 사용할 수 있습니다.

데이터베이스 프로젝트를 새 데이터베이스 또는 기존 데이터베이스로 배포하려면

  1. 솔루션 탐색기에서 배포할 데이터베이스 프로젝트를 클릭합니다.

    사용자 지정 구성을 만든 경우 표준 도구 모음의 솔루션 구성 목록에서 해당 이름을 클릭하여 사용자 지정 구성을 사용하도록 지정할 수 있습니다. 기본적으로 데이터베이스 프로젝트에 대해 하나의 구성이 있으며 이미 선택되어 있습니다.

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

    데이터베이스 프로젝트의 빌드 출력이 없거나 최신 상태가 아닌 경우 빌드 출력이 생성된 다음 배포됩니다. 출력 창에 다음과 같은 배포 결과가 표시됩니다.

    ProjectName -> D:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.dbschema

    ------ 배포 시작: 프로젝트: ProjectName, 구성: Any CPU 디버그 ------

    Deployment script ProjectName.sql generated

    Creating ProjectName

    Creating dbo.ObjectName

    .

    .

    .

    .

    ========== 빌드: 성공 또는 최신 상태 1, 실패 0, 생략 0 ==========

    ========== 배포: 성공 1, 실패 0, 생략 0 ==========

명령줄에서 데이터베이스 프로젝트를 새 데이터베이스 또는 기존 데이터베이스로 배포하려면

  1. 명령 프롬프트 창을 열고 프로젝트 디렉터리로 이동합니다.

  2. 명령 프롬프트에서 다음 예제 명령줄을 입력하여 데이터베이스 프로젝트를 배포합니다. 여기에서 DatabaseProject는 프로젝트의 이름입니다.

    MSBuild /t:Build;Deploy DatabaseProject.dbproj

    참고

    MSBuild.exe가 PATH 환경 변수에서 지정하는 경로에 있어야 합니다. 또한 데이터베이스 프로젝트에서 또는 명령줄의 일부로 TargetDatabase 및 TargetConnectionString을 지정해야 합니다. 빌드 스크립트를 생성하는 명령줄 구문에 대한 자세한 내용은 데이터베이스 빌드 및 배포 개요를 참조하십시오.

    다음과 같은 결과가 나타납니다.

    Microsoft (R) Build Engine Version 3.5.21022.8

    [Microsoft .NET Framework, Version 2.0.50727.1433]

    Copyright (C) Microsoft Corporation 2007. All rights reserved.

    Build started 5/20/2008 1:36:58 PM.

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" on node 0 (Deploy target(s)).

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (1) is building "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (2) on node 0 (DspDeploy target(s)).

    Deployment script ProjectName.sql generated

    :

    (1 row(s) affected)

    Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (DspDeploy

    target(s)).

    Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (Deploy target(s)).

    Build succeeded.

    0 Warning(s)

    0 Error(s)

    Time Elapsed 00:00:07.32

배포 스크립트를 실행하여 데이터베이스를 배포하려면

  1. 선택한 Transact-SQL 편집기에서 배포 스크립트를 엽니다.

    참고

    이 절차는 Visual Studio와 함께 제공되는 Transact-SQL을 사용한다는 가정 하에 진행됩니다.

    컴파일된 배포 스크립트는 이름이 ProjectName.sql이며 SolutionName\ProjectName\sql\Configuration 폴더에 있습니다. Configuration은 디버그 또는 릴리스와 같은 빌드 구성의 이름입니다.

  2. 메뉴 모음에서 데이터, Transact-SQL 편집기, SQLCMD 모드(사용하도록 설정되지 않은 경우)를 선택합니다.

    중요

    SQLCMD 모드를 사용하도록 설정하지 않으면 :setvar 문이 지원되지 않으므로 배포 스크립트를 실행할 때 오류가 발생합니다.

  3. 메뉴 모음에서 데이터, Transact-SQL 편집기, SQL 실행을 선택하여 배포 스크립트를 실행합니다. 해당 메시지가 나타나면 배포할 서버의 연결 정보를 지정합니다.

    배포 스크립트가 실행되고 데이터베이스가 만들어집니다.

여러 데이터베이스 또는 여러 서버에 배포

스키마를 여러 데이터베이스 또는 여러 서버에 배포할 수 있습니다. 개인 배포 서버와 스테이징 서버 모두에 배포하려는 경우와 같이 적은 수의 변경되지 않는 서버 또는 데이터베이스에 배포하는 경우에는 여러 빌드 구성을 만들 수 있습니다. 각 빌드 구성의 대상 서버 또는 데이터베이스는 서로 다를 수 있습니다. 많은 수의 서버에 배포해야 하거나 대상 서버 또는 데이터베이스의 이름이 정기적으로 변경되는 경우 다른 방법을 사용해야 합니다. 다음은 이러한 방법에 대한 설명입니다.

여러 빌드 구성을 만들어 여러 서버 또는 데이터베이스에 배포하려면

  1. Visual Studio에서 데이터베이스 프로젝트를 엽니다.

  2. 빌드 메뉴에서 구성 관리자를 클릭합니다.

    구성 관리자 대화 상자가 나타납니다.

  3. 활성 솔루션 구성 목록에서 **<새로 만들기...>**를 클릭합니다.

    새 솔루션 구성 대화 상자가 나타납니다.

  4. 이름에 첫 번째 서버 구성의 이름을 입력합니다.

  5. 기본 구성에 프로젝트 속성을 이미 구성한 경우 다음에서 설정 복사 목록에서 기본값을 클릭합니다.

  6. 확인을 클릭합니다.

  7. 활성 솔루션 구성 목록 상자에서 **<새로 만들기...>**를 클릭합니다.

    새 솔루션 구성 대화 상자가 나타납니다.

  8. 이름에 두 번째 서버 구성의 이름을 입력합니다.

  9. 기본 구성에 프로젝트 속성을 이미 구성한 경우 다음에서 설정 복사 목록에서 기본값을 클릭합니다.

    참고

    명명된 각 구성에 대한 데이터베이스 이름과 연결 문자열을 구성할 수도 있습니다.

  10. 닫기를 클릭합니다.

  11. 솔루션 탐색기에서 데이터베이스 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  12. 빌드 탭을 클릭합니다.

  13. 구성에서 첫 번째 서버 구성의 이름을 클릭합니다.

  14. 대상 연결 및 데이터베이스 이름을 첫 번째 서버 구성과 일치하도록 수정합니다.

  15. 구성에서 두 번째 서버 구성의 이름을 클릭합니다.

  16. 대상 연결 및 데이터베이스 이름을 두 번째 서버 구성과 일치하도록 수정합니다.

  17. 파일 메뉴에서 선택한 항목 저장을 클릭하여 구성 설정을 저장합니다.

    이제 표준 도구 모음에서 구성을 지정한 다음 해당 구성을 빌드 또는 배포할 수 있습니다.

MSBuild를 사용하여 명령줄에서 데이터베이스에 배포하려면

  • 명령 프롬프트 창에서 다음 명령줄을 입력하여 빌드 스크립트를 배포합니다. 여기에서 서버 이름 및 대상 구성은 해당 값으로 바꿉니다.

    MSBuild /t:Deploy /p:Configuration=TargetConfiguration DatabaseProjectName.dbproj

    참고

    여러 서버에 배포하려면 명령 프롬프트 창에서 /p:TargetConnectionString="Data Source=ServerName;Integrated Security=True;Pooling=False"를 지정하여 대상 연결 문자열을 재정의해야 합니다. 각 대상 서버에 대해 하나의 구성을 정의한 다음 배포할 구성을 지정할 수 있습니다.

VSDBCMD를 사용하여 명령 프롬프트에서 데이터베이스 프로젝트를 배포하려면

  • 중요

    이 절차에서는 VSDBCMD를 실행할 컴퓨터에 필요한 파일을 이미 복사했다고 가정합니다. 자세한 내용은 방법: VSDBCMD.EXE를 사용하여 명령 프롬프트에서 데이터베이스 배포 준비를 참조하십시오.

    명령 프롬프트 창을 열고 다음 명령줄을 입력합니다.

     VSDBCMD /a:Deploy /dd:+ /manifest:manifestFileName.dbmanifest
    

    배포 매니페스트는 명령줄에서 지정할 수 있는 대상 데이터베이스 이름, 연결 문자열 등과 같은 다른 설정을 제공합니다.

참고 항목

작업

방법: 데이터베이스 프로젝트를 빌드하여 컴파일된 스키마 파일(.dbschema) 생성

연습: 기존 버전 제어 데이터베이스로 변경 내용 배포

개념

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

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

변경 기록

날짜

변경 내용

이유

2010년 6월

고객 의견을 반영하여 소개 부분을 정리하고 VSDBCMD를 사용하여 배포하는 방법에 대한 정보를 추가했습니다.

고객 의견

2011년 5월

Transact-SQL 편집기에서 배포 스크립트를 실행하는 방법을 설명하는 절차가 추가되었습니다.

고객 의견