방법: 웹 응용 프로그램 패키지를 사용하여 데이터베이스 배포

하나 이상의 SQL Server 데이터베이스를 사용하는 웹 응용 프로그램 프로젝트의 배포를 준비할 때 배포 중에 실행되어야 하는 데이터베이스 스크립트를 지정하는 설정을 입력할 수 있습니다. 이 설정은 One-Click 게시를 사용하여 배포하거나 웹 배포 패키지를 사용하여 배포하는지에 관계없이 적용됩니다.

이 항목의 처음 두 절차에서는 대상 환경에 데이터베이스가 아직 없을 경우 배포할 데이터베이스 정보를 지정하기 위한 지침을 제공합니다. 나머지 절차에서는 응용 프로그램을 배포한 후 설정을 변경하는 방법을 설명합니다. 응용 프로그램을 처음 배포하고 나면 데이터베이스는 대상 서버에 있게 됩니다. 데이터베이스 스크립트를 실행하지 않거나 다른 스크립트를 실행할 수도 있습니다.

이 항목에서는 데이터베이스 설정에 대해서만 설명합니다. 다른 배포 설정 작업에 대한 자세한 내용은 방법: One-Click 게시 및 웹 배포를 사용하여 웹 응용 프로그램 프로젝트 배포 또는 방법: 웹 배포 패키지를 사용하여 웹 응용 프로그램 프로젝트 배포를 참조하십시오. 웹 응용 프로그램 프로젝트 배포에 대한 자세한 내용은 ASP.NET 배포 콘텐츠 맵을 참조하십시오.

참고참고

다음 절차는 10,000개 미만의 데이터베이스 개체가 포함된 데이터베이스에 사용하기 위한 것입니다. 이 개체 수에는 데이터뿐 아니라 구조도 포함됩니다. 테이블 행은 개체로 계산됩니다. 보다 큰 데이터베이스를 배포하는 방법에 대한 자세한 내용은 데이터베이스 게시 마법사를 사용하여 데이터베이스 배포를 참조하십시오.

프로젝트 속성 페이지의 SQL 패키지 및 게시 탭을 사용하여 배포 중에 실행될 스크립트를 결정하는 설정을 구성합니다. 이 탭은 마스터/세부 레이아웃으로 구성되어 있습니다. 위쪽의 표에서 배포할 데이터베이스를 지정합니다. 탭의 나머지 부분에서는 표에서 선택한 데이터베이스에 적용할 설정을 지정합니다.

배포할 데이터베이스를 지정하려면

  1. 솔루션 탐색기에서 프로젝트 이름을 선택한 다음 속성을 선택합니다.

  2. 속성 페이지에서 SQL 패키지 및 게시 탭을 클릭합니다.

    다음 그림과 같이 SQL 패키지 및 게시 탭이 표시됩니다.

    프로젝트 속성의 SQL 패키지 및 게시 탭
  3. 구성 드롭다운 목록에서 배포할 빌드 구성을 선택합니다.

    디버그 또는 릴리스 빌드 구성에 대해 배포를 구성하거나, 구성 관리자 대화 상자를 사용하여 만든 사용자 지정 빌드 구성에 대해 배포를 구성할 수 있습니다. 예를 들어 테스트 서버를 대상으로 하는 배포와 프로덕션 서버를 대상으로 하는 배포에 대한 설정을 서로 다르게 지정할 수 있습니다.

    구성 목록의 기본값은 활성입니다. 즉, 이 탭의 설정이 프로젝트에 대해 현재 선택된 빌드 구성에 적용됩니다. 현재 선택된 빌드 구성은 기본 도구 모음 및 구성 관리자 대화 상자에 표시됩니다. 구성 관리자를 열려면 빌드 메뉴에서 구성 관리자를 선택합니다.

  4. Web.config에서 가져오기를 클릭합니다.

    Web.config 파일에서 찾은 각 연결 문자열에 대해 표에서 행이 만들어집니다. 기본적으로 연결 문자열 뒤에 "-Deployment"가 붙습니다.

  5. 웹 응용 프로그램이 Web.config 파일에서 연결 문자열로 표시되지 않는 데이터베이스를 사용하는 경우에는 이러한 각 데이터베이스에 대한 행을 수동으로 추가합니다. 수동으로 입력한 행에 대해서는 해당 행이 적용되는 데이터베이스를 쉽게 기억할 수 있는 이름을 사용할 수 있습니다.

배포할 데이터베이스를 지정한 후에는 각 데이터베이스의 설정을 입력할 수 있습니다. 데이터베이스 항목 표에 입력한 각 데이터베이스에 대해 다음 단계를 수행합니다.

데이터베이스의 설정을 입력하려면

  1. 데이터베이스 항목 표에서 설정을 입력할 행을 선택합니다.

    데이터베이스 항목 세부 정보 섹션에서 입력한 값은 데이터베이스 항목 표에서 현재 선택된 행에만 적용됩니다. 데이터베이스 항목 표에서 선택된 행이 없는 경우에는 데이터베이스 항목 세부 정보 섹션을 사용할 수 없습니다.

  2. 대상 데이터베이스에 대한 연결 문자열 상자에 배포 도중 사용할 연결 문자열을 입력합니다.

    이 연결 문자열은 배포된 Web.config에서 같은 데이터베이스에 대해 사용하는 연결 문자열과 다를 수 있습니다. 예를 들어 배포에 사용할 연결 문자열에는 관리자 권한이 필요하지만, 사용자가 응용 프로그램을 실행할 때는 연결에 관리자 권한을 없앨 수 있습니다.

  3. 기존 데이터베이스에서 스크립트를 자동으로 생성하려면 기존 데이터베이스에서 데이터 및/또는 스키마 가져오기 확인란을 선택합니다.

    기본적으로 이 확인란은 Web.config 파일에서 가져온 데이터베이스 항목 표의 행에 대해서는 선택되어 있습니다. 이 옵션을 선택하면 대상 데이터베이스에서 실행될 자동 생성 스크립트를 나타내는 행이 데이터베이스 스크립트 표에 포함됩니다.

  4. 기존 데이터베이스에서 데이터 및/또는 스키마 가져오기 확인란을 선택한 경우에는 다음 단계를 수행합니다.

    1. 소스 데이터베이스에 대한 연결 문자열 텍스트 상자에 배포 도중 사용할 연결 문자열을 입력합니다.

      기본적으로 Web.config 파일에서 가져온 데이터베이스 항목 표의 행에 대해서는 이 필드가 Web.config 파일의 값으로 초기화되어 있습니다.

    2. 데이터베이스 스크립트 옵션 목록다운 목록에서 이 데이터베이스에 대해 자동으로 생성된 스크립트가 대상 환경에서 데이터베이스 구조만 복제할 것인지(스키마만), 구조와 데이터를 모두 복제할 것인지(스키마 및 데이터), 데이터만 복제할 것인지(데이터만)를 지정합니다.

      참고참고

      기본 ASP.NET 멤버 자격 데이터베이스를 배포하고 있고 개발 컴퓨터에서 만든 계정을 배포하지 않으려는 경우에는 추가 단계가 필요합니다. 멤버 자격 시스템이 테이블 중 하나의 데이터를 필요로 하기 때문에 스키마만을 선택할 수는 없습니다. 자세한 내용은 방법: 사용자 계정을 포함하지 않고 ASP.NET 멤버 자격 데이터베이스 배포를 참조하십시오.

      참고참고

      스키마만 또는 스키마 및 데이터를 선택하는 경우나 데이터베이스에 사용자 또는 역할이 만들어진 경우, 대상 데이터베이스에 사용자나 역할을 만들 수 있는 권한이 없으면 배포에 실패할 수 있습니다. 이 오류에 대한 자세한 내용과 이 오류를 해결 또는 방지하는 방법은 ASP.NET 웹 응용 프로그램 프로젝트 배포 FAQ에서 CREATE USER 및 CREATE ROLE 데이터베이스 명령에 대한 질문을 참조하십시오.

  5. 배포 중에 대상 데이터베이스에서 실행될 사용자 지정 데이터베이스 스크립트를 지정하려면 스크립트 추가 단추를 사용하여 데이터베이스 스크립트 표에 추가합니다.

    스크립트 추가를 클릭하면 파일 선택 대화 상자가 표시됩니다. 이 대화 상자에서는 작성한 스크립트를 선택하여 데이터베이스 스크립트 표에 추가할 수 있습니다.

  6. 데이터베이스 스크립트 표에 있는 행이 스크립트가 실행되어야 하는 순서대로가 아닌 경우에는 위쪽 화살표와 아래쪽 화살표를 사용하여 행을 다시 정리합니다.

  7. 배포 중인 빌드 구성에 대한 Web.config 변환 파일에서 이 데이터베이스에 대한 연결 문자열을 배포된 웹 응용 프로그램에 포함할 값으로 변환할 태그를 추가합니다.

    Web.config 변환 파일을 만들고 편집하는 방법에 대한 자세한 내용은 방법: 웹 응용 프로그램 프로젝트를 배포할 때 Web.config 변환을 참조하십시오.

  8. 자동으로 생성된 스크립트가 트랜잭션에서 실행되지 않도록 하려면 프로젝트 파일을 편집하여 스크립트 Source 요소의 Transacted 특성을 False로 설정합니다. 프로젝트 파일을 편집하는 방법에 대한 자세한 내용은 방법: 프로젝트 파일에서 배포 설정 편집을 참조하십시오.

    기본적으로 자동으로 생성된 스크립트는 트랜잭션에서 실행됩니다. 매우 큰 데이터베이스를 배포하는 경우에는 성능 향상을 위해 이 스크립트가 트랜잭션에서 실행되지 않도록 하는 것을 선호할 수도 있습니다. 기본적으로 사용자 지정 스크립트는 트랜잭션에서 실행되지 않습니다.

    참고참고

    데이터베이스에 대해 여러 개의 스크립트가 실행되는 경우 모든 스크립트의 Transacted 특성에 대해 동일한 값을 설정합니다. True False 값을 혼용하면 배포 중에 시간 초과 오류가 발생하게 됩니다.

  9. 소스 또는 대상 데이터베이스가 SQL Azure이고 자동으로 생성된 스크립트를 실행하는 경우에는 프로젝트 파일에서 스크립트의 PreSource 요소를 편집하여 다음 특성을 포함하도록 합니다.

    targetDatabaseEngineType=SQLAzureDatabase

    targetServerVersion=version100

    prefetchObjects=false

    targetServerVersion version100(SQL 2008의 경우) 또는 version105(SQL 2008 R2)로 설정합니다. 프로젝트 파일을 편집하는 방법에 대한 자세한 내용은 방법: 프로젝트 파일에서 배포 설정 편집을 참조하십시오.

웹 응용 프로그램을 처음 배포한 후에 다시 배포해야 할 수도 있습니다. 다음 절차는 웹 응용 프로그램을 다시 배포할 때 모든 데이터베이스 또는 선택한 데이터베이스에 대해 데이터베이스 업데이트를 사용하지 않는 방법을 설명합니다.

데이터베이스 변경 없이 다시 배포하려면

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

  2. 웹 패키지 및 게시 탭을 클릭합니다.

    다음 그림과 같이 웹 패키지 및 게시 탭이 표시됩니다.

    패키지/게시 대화 상자
  3. 설정을 변경할 빌드 구성이 구성 드롭다운 목록에서 선택되어 있는지 확인합니다.

  4. 데이터베이스 항목 표에 있는 모든 데이터베이스에 대해 업데이트를 사용하지 않으려면 SQL 패키지 및 게시 탭에서 구성된 모든 데이터베이스 포함 확인란을 선택 취소합니다.

    이 확인란을 선택 취소하면 배포 중에 어떠한 SQL 스크립트도 실행되지 않습니다.

  5. 데이터베이스 항목 표에 있는 선택된 데이터베이스에 대해 업데이트를 사용하지 않으려면 스크립트를 실행하지 않을 각 데이터베이스에 대해 배포 확인란을 선택 취소합니다.

    이 확인란을 선택 취소하면 지정된 데이터베이스에 대해 배포 중에 어떠한 SQL 스크립트도 실행되지 않습니다.

자동으로 생성된 스크립트를 사용하여 데이터베이스를 배포한 이후에 데이터베이스를 변경한 다음 데이터베이스를 다시 배포할 수도 있습니다. 이 경우 배포 프로세스에서는 데이터베이스 개체가 다시 만들어지기 전에 기존 데이터베이스 개체를 삭제해야 합니다. 다음 절차에서는 자동으로 생성된 스크립트가 SQL Drop 문을 포함하도록 지정하는 방법을 설명합니다.

주의 정보주의

대상 환경에서 입력되었을 수 있는 데이터는 모두 손실됩니다.

자동으로 생성된 스크립트를 사용하여 데이터베이스를 다시 배포하려면

  • 자동으로 생성된 스크립트가 테이블, 뷰, 저장 프로시저 같은 데이터베이스 개체를 개별적으로 삭제한 후에 해당 개체의 새 버전을 만들도록 하려면 프로젝트 파일을 편집하여 자동으로 생성된 스크립트에 대한 PreSource 요소의 ScriptDropsFirst 특성을 True로 설정합니다. 프로젝트 파일을 편집하는 방법에 대한 자세한 내용은 방법: 프로젝트 파일에서 배포 설정 편집을 참조하십시오.

    이 설정은 소스 데이터베이스에서 만들어지는 각 데이터베이스 개체에 대해 SQL Drop 문이 생성되도록 합니다. 특정 개체에 대한 이 Drop 문은 문이 해당 개체를 만들기 직전에 실행됩니다. 개체가 대상 데이터베이스에는 있지만 소스 데이터베이스에는 없는 경우(일반적으로 이전 배포 후 소스 데이터베이스에서 삭제되었기 때문에 발생하는 현상) 해당 개체에 대해 어떠한 Drop 문도 생성되지 않습니다.

    개별 데이터베이스 개체를 다시 만들기 전에 전체 데이터베이스를 삭제하려면 Source 요소의 DropDestinationDatabase 특성을 True로 설정합니다.

    참고참고

    사용 중인 자격 증명에 데이터베이스를 삭제하고 다시 만들 수 있는 충분한 권한이 있는지 확인합니다. 자격 증명이 db_owner 역할에 할당되었지만 dbcreator 역할에는 할당되지 않은 경우 데이터베이스를 삭제할 수 있지만 삭제한 후 데이터베이스를 다시 만들 수는 없습니다. 호스팅 업체에 배포하는 경우에는 제공된 자격 증명이 dbcreator 역할에 할당되지 않을 수도 있습니다.

데이터베이스를 배포한 후에 데이터베이스를 변경하고 대상 데이터베이스에 변경 내용만 배포할 수도 있습니다. 그러면 대상 데이터베이스에 입력되었을 수 있는 데이터를 모두 보존할 수 있습니다. 다음 절차는 자동으로 생성된 스크립트를 사용하지 않고 데이터베이스를 업데이트하는 사용자 지정 스크립트를 추가하는 방법을 설명합니다.

참고참고

Visual Studio에서는 스키마 또는 데이터의 변경 내용을 식별하기 위해 원본 데이터베이스와 대상 데이터베이스가 자동으로 비교되지 않습니다. 다음 절차에서 설명하는 방법은 데이터베이스 변경 내용을 게시하는 유일한 방법입니다.

데이터베이스에 변경 사항을 배포하고 데이터를 보존하려면

  1. 대상 데이터베이스에서 원하는 변경 사항을 적용할 사용자 지정 데이터베이스 스크립트를 만듭니다.

    데이터베이스 프로젝트를 사용하여 변경 사항을 데이터베이스 구조에 반영하는 스크립트를 자동으로 생성할 수 있습니다. 자세한 내용은 데이터베이스 프로젝트 작업을 참조하십시오.

  2. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

  3. SQL 패키지 및 게시 탭을 클릭합니다.

    다음 그림과 같이 SQL 패키지 및 게시 탭이 표시됩니다.

    프로젝트 속성의 SQL 패키지 및 게시 탭
  4. 데이터베이스 스크립트 표에서 실행되지 않아야 하는 스크립트의 행에서 포함 확인란을 선택 취소합니다.

    기존 데이터베이스에서 데이터 및/또는 스키마 가져오기 확인란을 선택한 경우에는 자동으로 생성된 스크립트의 포함 확인란을 선택 취소합니다.

  5. 스크립트 추가 단추를 사용하여 선택한 데이터베이스에 대한 사용자 지정 데이터베이스 스크립트를 추가합니다.

    스크립트 추가를 클릭하면 파일 선택 대화 상자가 나타납니다. 이 대화 상자에서는 작성한 스크립트를 선택하여 데이터베이스 스크립트 표에 추가할 수 있습니다. 기본적으로 포함 확인란은 선택된 상태로 나타납니다.

  6. 데이터베이스 스크립트 표에 있는 행이 스크립트가 실행되어야 하는 순서대로가 아닌 경우에는 위쪽 화살표와 아래쪽 화살표를 사용하여 행을 다시 정리할 수도 있습니다.

표시: