Visual Studio 또는 Visual Web Developer를 사용하여 SQL Server Compact ASP.NET 웹 애플리케이션 배포: SQL Server 마이그레이션 - 12개 중 10개

작성자: Tom Dykstra

시작 프로젝트 다운로드

이 자습서 시리즈에서는 Visual Studio 2012 RC 또는 Visual Studio Express 2012 RC for Web을 사용하여 SQL Server Compact 데이터베이스를 포함하는 ASP.NET 웹 애플리케이션 프로젝트를 배포(게시)하는 방법을 보여 줍니다. 웹 게시 업데이트를 설치하는 경우 Visual Studio 2010을 사용할 수도 있습니다. 시리즈에 대한 소개는 시리즈의 첫 번째 자습서를 참조하세요.

Visual Studio 2012의 RC 릴리스 이후 도입된 배포 기능을 보여 주는 자습서에서는 SQL Server Compact 이외의 SQL Server 버전을 배포하는 방법을 보여 줍니다. Azure App Service Web Apps 배포하는 방법을 보여 주는 자습서는 Visual Studio를 사용하여 ASP.NET 웹 배포를 참조하세요.

개요

이 자습서에서는 SQL Server Compact SQL Server 마이그레이션하는 방법을 보여줍니다. 이 작업을 수행하는 한 가지 이유는 저장 프로시저, 트리거, 뷰 또는 복제와 같이 SQL Server Compact 지원하지 않는 SQL Server 기능을 활용하기 위한 것입니다. SQL Server Compact SQL Server 차이점에 대한 자세한 내용은 배포 SQL Server Compact 자습서를 참조하세요.

SQL Server Express 및 개발을 위한 전체 SQL Server

SQL Server 업그레이드하기로 결정한 후에는 개발 및 테스트 환경에서 SQL Server 또는 SQL Server Express 사용할 수 있습니다. 도구 지원 및 데이터베이스 엔진 기능의 차이점 외에도 SQL Server Compact 및 다른 버전의 SQL Server 간에 공급자 구현에는 차이가 있습니다. 이러한 차이로 인해 동일한 코드가 서로 다른 결과를 생성할 수 있습니다. 따라서 개발 데이터베이스로 SQL Server Compact 유지하려는 경우 프로덕션에 각 배포하기 전에 테스트 환경에서 SQL Server 또는 SQL Server Express 사이트를 철저히 테스트해야 합니다.

SQL Server Compact 달리 SQL Server Express 기본적으로 동일한 데이터베이스 엔진이며 전체 SQL Server 동일한 .NET 공급자를 사용합니다. SQL Server Express 사용하여 테스트할 때 SQL Server 것과 동일한 결과를 얻을 수 있습니다. SQL Server 사용할 수 있는 SQL Server Express 동일한 데이터베이스 도구의 대부분을 사용할 수 있으며(SQL Server Profiler 주목할 만한 예외) 저장 프로시저, 뷰, 트리거 및 복제와 같은 SQL Server 다른 기능을 지원합니다. 그러나 일반적으로 프로덕션 웹 사이트에서 전체 SQL Server 사용해야 합니다. SQL Server Express 공유 호스팅 환경에서 실행할 수 있지만 이를 위해 설계되지 않았으며 많은 호스팅 공급자가 이를 지원하지 않습니다.)

Visual Studio 2012를 사용하는 경우 기본적으로 Visual Studio에 설치되기 때문에 일반적으로 개발 환경에 대해 SQL Server Express LocalDB를 선택합니다. 그러나 LocalDB는 IIS에서 작동하지 않으므로 테스트 환경의 경우 SQL Server 또는 SQL Server Express 사용해야 합니다.

데이터베이스를 결합하는 것과 데이터베이스를 분리된 상태로 유지

Contoso University 애플리케이션에는 멤버 자격 데이터베이스(aspnet.sdf) 및 애플리케이션 데이터베이스(School.sdf)의 두 SQL Server Compact 데이터베이스가 있습니다. 마이그레이션할 때 이러한 데이터베이스를 두 개의 개별 데이터베이스 또는 단일 데이터베이스로 마이그레이션할 수 있습니다. 애플리케이션 데이터베이스와 멤버 자격 데이터베이스 간의 데이터베이스 조인을 용이하게 하기 위해 결합할 수 있습니다. 호스팅 플랜을 결합하는 이유도 제공할 수 있습니다. 예를 들어 호스팅 공급자는 여러 데이터베이스에 대해 더 많은 요금을 부과하거나 둘 이상의 데이터베이스를 허용하지 않을 수도 있습니다. 이 자습서에 사용되는 Cytanium Lite 호스팅 계정의 경우 단일 SQL Server 데이터베이스만 허용합니다.

이 자습서에서는 다음과 같이 두 데이터베이스를 마이그레이션합니다.

  • 개발 환경에서 두 개의 LocalDB 데이터베이스로 마이그레이션합니다.
  • 테스트 환경에서 두 개의 SQL Server Express 데이터베이스로 마이그레이션합니다.
  • 프로덕션 환경에서 하나의 결합된 전체 SQL Server 데이터베이스로 마이그레이션합니다.

미리 알림: 자습서를 진행하는 동안 오류 메시지가 표시되거나 문제가 해결되지 않으면 문제 해결 페이지를 검사 합니다.

SQL Server Express 설치

SQL Server Express 기본적으로 Visual Studio 2010에 자동으로 설치되지만 기본적으로 Visual Studio 2012에는 설치되지 않습니다. SQL Server 2012 Express를 설치하려면 다음 링크를 클릭합니다.

ENU/x64/SQLEXPR_x64_ENU.exe 또는 ENU/x86/SQLEXPR_x86_ENU.exe를 선택하고 설치 마법사에서 기본 설정을 적용합니다. 설치 옵션에 대한 자세한 내용은 설치 마법사(설치)에서 SQL Server 2012 설치를 참조하세요.

테스트 환경에 대한 SQL Server Express 데이터베이스 만들기

다음 단계는 ASP.NET 멤버 자격 및 학교 데이터베이스를 만드는 것입니다.

보기 메뉴에서 서버 Explorer(Visual Web Developer의 데이터베이스 Explorer)를 선택한 다음 데이터 Connections 마우스 오른쪽 단추로 클릭하고 새 SQL Server 데이터베이스 만들기를 선택합니다.

Selecting_Create_New_SQL_Server_Database

새 SQL Server 데이터베이스 만들기 대화 상자의 서버 이름 상자에 ".\SQLExpress"를 입력하고 새 데이터베이스 이름 상자에 "aspnet-Test"를 입력한 다음 확인을 클릭합니다.

Create_New_SQL_Server_Database_aspnet

동일한 절차에 따라 "School-Test"라는 새 SQL Server Express School 데이터베이스를 만듭니다.

(나중에 개발 환경에 대해 각 데이터베이스의 추가 instance 만들고 두 데이터베이스 집합을 구분할 수 있어야 하므로 이러한 데이터베이스 이름에 "테스트"를 추가합니다.)

이제 서버 Explorer 두 개의 새 데이터베이스가 표시됩니다.

New_databases_in_Server_Explorer

새 데이터베이스에 대한 권한 부여 스크립트 만들기

애플리케이션이 개발 컴퓨터의 IIS에서 실행되면 애플리케이션은 기본 애플리케이션 풀의 자격 증명을 사용하여 데이터베이스에 액세스합니다. 그러나 기본적으로 애플리케이션 풀 ID에는 데이터베이스를 열 수 있는 권한이 없습니다. 따라서 해당 권한을 부여하기 위해 스크립트를 실행해야 합니다. 이 섹션에서는 나중에 실행할 스크립트를 만들어 애플리케이션이 IIS에서 실행할 때 데이터베이스를 열 수 있는지 확인합니다.

프로덕션 환경에 배포 자습서에서 만든 솔루션의 SolutionFiles 폴더에서 Grant.sql 라는 새 SQL 파일을 만듭니다. 다음 SQL 명령을 파일에 복사한 다음 파일을 저장하고 닫습니다.

IF NOT EXISTS (SELECT name FROM sys.server_principals WHERE name = 'IIS APPPOOL\DefaultAppPool')
BEGIN
    CREATE LOGIN [IIS APPPOOL\DefaultAppPool] 
      FROM WINDOWS WITH DEFAULT_DATABASE=[master], 
      DEFAULT_LANGUAGE=[us_english]
END
GO
CREATE USER [ContosoUniversityUser] 
  FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember 'db_owner', 'ContosoUniversityUser'
GO

참고

이 스크립트는 SQL Server 2008 및 Windows 7의 IIS 설정에서 이 자습서에 지정된 대로 작동하도록 설계되었습니다. 다른 버전의 SQL Server 또는 Windows를 사용하거나 컴퓨터에서 IIS를 다르게 설정하는 경우 이 스크립트를 변경해야 할 수 있습니다. SQL Server 스크립트에 대한 자세한 내용은 온라인 설명서 SQL Server 참조하세요.

참고

보안 참고 사항 이 스크립트는 런타임에 데이터베이스에 액세스하는 사용자에게 db_owner 권한을 부여합니다. 이는 프로덕션 환경에서 사용할 수 있는 권한입니다. 일부 시나리오에서는 배포에 대해서만 전체 데이터베이스 스키마 업데이트 권한이 있는 사용자를 지정하고 런타임에 데이터를 읽고 쓸 수 있는 권한만 있는 다른 사용자를 지정할 수 있습니다. 자세한 내용은 IIS에 테스트 환경으로 배포에서 Code First 마이그레이션 대한 자동 Web.config 변경 내용 검토를 참조하세요.

테스트 환경에 대한 데이터베이스 배포 구성

다음으로 각 데이터베이스에 대해 다음 작업을 수행하게 되도록 Visual Studio를 구성합니다.

  • 대상 데이터베이스에 원본 데이터베이스의 구조(테이블, 열, 제약 조건 등)를 만드는 SQL 스크립트를 생성합니다.
  • 원본 데이터베이스의 데이터를 대상 데이터베이스의 테이블에 삽입하는 SQL 스크립트를 생성합니다.
  • 생성된 스크립트 및 만든 권한 부여 스크립트를 대상 데이터베이스에서 실행합니다.

프로젝트 속성 창을 열고 패키지/게시 SQL 탭을 선택합니다.

구성 드롭다운 목록에서 활성(릴리스) 또는 릴리스가 선택되어 있는지 확인합니다.

이 페이지 사용을 클릭합니다.

Package_Publish_SQL_tab_Enable_This_page

패키지/게시 SQL 탭은 레거시 배포 방법을 지정하기 때문에 일반적으로 사용하지 않도록 설정됩니다. 대부분의 시나리오에서는 웹 게시 마법사에서 데이터베이스 배포를 구성해야 합니다. SQL Server Compact SQL Server 또는 SQL Server Express 마이그레이션하는 것은 이 메서드를 선택하는 특별한 경우입니다.

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

Selecting_Import_from_Web.config

Visual Studio는 Web.config 파일에서 연결 문자열을 찾고, 멤버 자격 데이터베이스용 문자열과 School 데이터베이스용 문자열을 찾고, 데이터베이스 항목 테이블의 각 연결 문자열 해당하는 행을 추가합니다. 찾은 연결 문자열은 기존 SQL Server Compact 데이터베이스에 대한 것이며, 다음 단계는 이러한 데이터베이스를 배포하는 방법과 위치를 구성하는 것입니다.

데이터베이스 항목 테이블 아래의 데이터베이스 항목 세부 정보 섹션에 데이터베이스 배포 설정을 입력 합니다 . 다음 그림과 같이 데이터베이스 항목 세부 정보 섹션에 표시된 설정은 선택한 데이터베이스 항목 테이블의 행과 관련이 있습니다.

Database_Entry_Details_section_of_Package_Publish_SQL_tab

멤버 자격 데이터베이스에 대한 배포 설정 구성

멤버 자격 데이터베이스에 적용되는 설정을 구성하려면 데이터베이스 항목 테이블에서 DefaultConnection-Deployment 행을 선택합니다.

대상 데이터베이스에 대한 연결 문자열에서 새 SQL Server Express 멤버 자격 데이터베이스를 가리키는 연결 문자열 입력합니다. 서버 Explorer 필요한 연결 문자열 가져올 수 있습니다. 서버 Explorer데이터 Connections 확장하고 aspnetTest 데이터베이스를 선택한 다음 속성 창에서 연결 문자열 값을 복사합니다.

aspnet_connection_string_in_Server_Explorer

동일한 연결 문자열 여기에서 재현됩니다.

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False

이 연결 문자열 복사하여 패키지/게시 SQL 탭의 대상 데이터베이스에 대한 연결 문자열에 붙여넣습니다.

기존 데이터베이스에서 데이터 끌어오기 및/또는 스키마가 선택되어 있는지 확인합니다. 이로 인해 SQL 스크립트가 자동으로 생성되고 대상 데이터베이스에서 실행됩니다.

원본 데이터베이스 값에 대한 연결 문자열Web.config 파일에서 추출되고 개발 SQL Server Compact 데이터베이스를 가리킵니다. 나중에 대상 데이터베이스에서 실행되는 스크립트를 생성하는 데 사용되는 원본 데이터베이스입니다. 데이터베이스의 프로덕션 버전을 배포하려면 "aspnet-Dev.sdf"를 "aspnet-Prod.sdf"로 변경합니다.

데이터베이스 구조뿐만 아니라 데이터(사용자 계정 및 역할)를 복사하려고 하므로 데이터베이스 스크립팅 옵션을스키마만 에서 스키마 및 데이터로 변경합니다.

이전에 만든 권한 부여 스크립트를 실행하도록 배포를 구성하려면 데이터베이스 스크립트 섹션에 추가해야 합니다. 스크립트 추가를 클릭하고 SQL 스크립트 추가 대화 상자에서 권한 부여 스크립트를 저장한 폴더(솔루션 파일이 포함된 폴더)로 이동합니다. Grant.sql 파일을 선택하고 열기를 클릭합니다.

Select_File_dialog_box_grant_script

데이터베이스 항목DefaultConnection-Deployment 행에 대한 설정은 이제 다음 그림과 같습니다.

Database_Entry_Details_for_DefaultConnection_Test

School Database에 대한 배포 설정 구성

그런 다음 데이터베이스 항목 테이블에서 SchoolContext-Deployment 행을 선택하여 School 데이터베이스에 대한 배포 설정을 구성합니다.

이전에 사용한 것과 동일한 메서드를 사용하여 새 SQL Server Express 데이터베이스에 대한 연결 문자열 가져올 수 있습니다. 이 연결 문자열 패키지/게시 SQL 탭에서 대상 데이터베이스의 연결 문자열에 복사합니다.

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False

기존 데이터베이스에서 데이터 및/또는 스키마 끌어오기를 선택했는지 확인합니다.

원본 데이터베이스 값에 대한 연결 문자열Web.config 파일에서 추출되고 개발 SQL Server Compact 데이터베이스를 가리킵니다. "School-Dev.sdf"를 "School-Prod.sdf"로 변경하여 데이터베이스의 프로덕션 버전을 배포합니다. (App_Data 폴더에 School-Prod.sdf 파일을 만든 적이 없으므로 나중에 테스트 환경에서 ContosoUniversity 프로젝트 폴더의 App_Data 폴더로 해당 파일을 복사합니다.)

데이터베이스 스크립팅 옵션을스키마 및 데이터로 변경합니다.

또한 스크립트를 실행하여 이 데이터베이스에 대한 읽기 및 쓰기 권한을 애플리케이션 풀 ID에 부여하려고 하므로 멤버 자격 데이터베이스에 대해 했던 것처럼 Grant.sql 스크립트 파일을 추가합니다.

완료되면 데이터베이스 항목SchoolContext-Deployment 행에 대한 설정은 다음 그림과 같습니다.

Database_Entry_Details_for_SchoolContext_Test

변경 내용을 패키지/게시 SQL 탭에 저장합니다.

c:\inetpub\wwwroot\ContosoUniversity\App_Data 폴더의 School-Prod.sdf 파일을 ContosoUniversity 프로젝트의 App_Data 폴더에 복사합니다.

권한 부여 스크립트에 대한 트랜잭션 모드 지정

배포 프로세스는 데이터베이스 스키마 및 데이터를 배포하는 스크립트를 생성합니다. 기본적으로 이러한 스크립트는 트랜잭션에서 실행됩니다. 그러나 기본적으로 사용자 지정 스크립트(예: 권한 부여 스크립트)는 트랜잭션에서 실행되지 않습니다. 배포 프로세스가 트랜잭션 모드를 혼합하는 경우 배포 중에 스크립트가 실행될 때 시간 제한 오류가 발생할 수 있습니다. 이 섹션에서는 트랜잭션에서 실행되도록 사용자 지정 스크립트를 구성하기 위해 프로젝트 파일을 편집합니다.

솔루션 탐색기ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 언로드를 선택합니다.

Unload_Project_in_Solution_Explorer

그런 다음 프로젝트를 다시 마우스 오른쪽 단추로 클릭하고 ContosoUniversity.csproj 편집을 선택합니다.

Edit_Project_in_Solution_Explorer

Visual Studio 편집기에서 프로젝트 파일의 XML 콘텐츠를 표시합니다. 여러 PropertyGroup 요소가 있습니다. (이미지에서 요소의 PropertyGroup 내용이 생략되었습니다.)

프로젝트 파일 편집기 창

특성이 없는 Condition 첫 번째 설정은 빌드 구성에 관계없이 적용되는 설정에 대한 것입니다. 한 요소는 PropertyGroup 디버그 빌드 구성에만 적용되고(특성 참고 Condition ), 릴리스 빌드 구성에만 적용되고, 하나는 테스트 빌드 구성에만 적용됩니다. PropertyGroup 릴리스 빌드 구성의 요소 내에 패키지/게시 SQL 탭에 입력한 설정이 포함된 요소가 표시됩니다PublishDatabaseSettings. 지정한 Object 각 권한 부여 스크립트에 해당하는 요소가 있습니다("Grant.sql"의 두 인스턴스를 확인). 기본적으로 Transacted 각 권한 부여 스크립트에 대한 요소의 Source 특성은 입니다 False.

Transacted_false

요소TrueTransacted 특성 Source 값을 로 변경합니다.

Transacted_true

프로젝트 파일을 저장하고 닫은 다음 솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 다시 로드를 선택합니다.

Reload_project

연결 문자열에 대한 Web.Config 변환 설정

패키지/게시 SQL 탭에 입력한 새 SQL Express 데이터베이스에 대한 연결 문자열은 배포 중에 대상 데이터베이스를 업데이트하는 데만 웹 배포에서 사용됩니다. 배포된Web.config파일의 연결 문자열이 새 SQL Server Express 데이터베이스를 가리키도록 Web.config 변환을 설정해야 합니다. ( 패키지/게시 SQL 탭을 사용하는 경우 게시 프로필에서 연결 문자열을 구성할 수 없습니다.)

Web.Test.config 열고 요소를 다음 예제의 connectionStrings 요소로 바꿉 connectionStrings 있습니다. (컨텍스트를 제공하기 위해 여기에 표시된 주변 코드가 아니라 connectionStrings 요소만 복사해야 합니다.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

이 코드는 connectionString 배포된 Web.config 파일에서 각 add 요소의 및 providerName 특성을 대체합니다. 이러한 연결 문자열은 패키지/게시 SQL 탭에 입력한 연결 문자열과 동일하지 않습니다. Entity Framework 및 Universal Providers 필요하므로 "MultipleActiveResultSets=True" 설정이 추가되었습니다.

SQL Server Compact 설치

SqlServerCompact NuGet 패키지는 Contoso University 애플리케이션에 대한 SQL Server Compact 데이터베이스 엔진 어셈블리를 제공합니다. 하지만 지금은 애플리케이션이 아니라 SQL Server 데이터베이스에서 실행할 스크립트를 만들기 위해 SQL Server Compact 데이터베이스를 읽을 수 있어야 하는 웹 배포입니다. 웹 배포가 SQL Server Compact 데이터베이스를 읽을 수 있도록 하려면 Microsoft SQL Server Compact 4.0 SP1 링크를 사용하여 개발 컴퓨터에 SQL Server Compact 설치합니다.

테스트 환경에 배포

테스트 환경에 게시하려면 게시 프로필 데이터베이스 설정 대신 데이터베이스 게시에 패키지/게시 SQL 탭을 사용하도록 구성된 게시 프로필을 만들어야 합니다.

먼저 기존 테스트 프로필을 삭제합니다.

솔루션 탐색기 ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 클릭합니다.

프로필 탭을 선택합니다.

프로필 관리를 클릭합니다.

테스트를 선택하고 제거를 클릭한 다음 닫기를 클릭합니다.

웹 게시 마법사를 닫아 이 변경 사항을 저장합니다.

다음으로, 새 테스트 프로필을 만들고 이를 사용하여 프로젝트를 게시합니다.

솔루션 탐색기 ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 클릭합니다.

프로필 탭을 선택합니다.

드롭다운 목록에서 새로 만들기...>를 선택하고< 프로필 이름으로 "테스트"를 입력합니다.

서비스 URL 상자에 localhost를 입력합니다.

사이트/애플리케이션 상자에 기본 웹 사이트/ContosoUniversity를 입력합니다.

대상 URL 상자에 를 입력합니다http://localhost/ContosoUniversity/.

다음을 클릭합니다.

설정 탭은 패키지/게시 SQL 탭이 구성되었음을 경고하고 새 데이터베이스 게시 개선 사항을 사용하도록 설정 을 클릭하여 재정의할 수 있는 기회를 제공합니다. 이 배포의 경우 패키지/게시 SQL 탭 설정을 재정의하지 않으려면 다음을 클릭합니다.

Publish_Web_wizard_Settings_tab_Migrate

미리 보기 탭의 메시지는 게시할 데이터베이스가 선택되지 않음을 나타내지만 이는 데이터베이스 게시가 게시 프로필에 구성되지 않았다는 의미일 뿐입니다.

게시를 클릭합니다.

Publish_Web_wizard_Preview_tab_Migrate

Visual Studio는 애플리케이션을 배포하고 브라우저를 테스트 환경의 사이트 홈페이지로 엽니다. 강사 페이지를 실행하여 앞에서 본 것과 동일한 데이터가 표시되는지 확인합니다. 학생 추가 페이지를 실행하고 새 학생을 추가한 다음 학생 페이지에서 새 학생을 봅니다. 이렇게 하면 에서 데이터베이스를 업데이트할 수 있는지 확인합니다. 크레딧 업데이트 페이지(로그인해야 합니다)를 선택하여 멤버 자격 데이터베이스가 배포되었고 액세스 권한이 있는지 확인합니다.

프로덕션 환경에 대한 SQL Server 데이터베이스 만들기

이제 테스트 환경에 배포했으므로 프로덕션에 배포를 설정할 준비가 되었습니다. 배포할 데이터베이스를 만들어 테스트 환경에 대해 수행한 대로 시작합니다. 개요에서 설명한 것처럼 Cytanium Lite 호스팅 계획은 단일 SQL Server 데이터베이스만 허용하므로 두 데이터베이스가 아닌 하나의 데이터베이스만 설정합니다. 멤버 자격 및 School SQL Server Compact 데이터베이스의 모든 테이블과 데이터는 프로덕션의 하나의 SQL Server 데이터베이스에 배포됩니다.

의 Cytanium 제어판으로 http://panel.cytanium.com이동합니다. 마우스를 데이터베이스 위로 누른 다음 SQL Server 2008을 클릭합니다.

Selecting_Databases_in_Control_Panel

SQL Server 2008 페이지에서 데이터베이스 만들기를 클릭합니다.

Selecting_Create_Database

데이터베이스 이름을 "School"으로 지정하고 저장을 클릭합니다. (페이지는 "contosou" 접두사를 자동으로 추가하므로 유효 이름은 "contosouSchool"이 됩니다.)

Naming_the_database

같은 페이지에서 사용자 만들기를 클릭합니다. 통합 Windows 보안을 사용하고 애플리케이션 풀 ID가 데이터베이스를 열도록 하는 대신 Cytanium의 서버에서 데이터베이스를 열 권한이 있는 사용자를 만듭니다. 프로덕션 Web.config 파일로 이동하는 연결 문자열에 사용자의 자격 증명을 추가합니다. 이 단계에서는 해당 자격 증명을 만듭니다.

Creating_a_database_user

SQL 사용자 속성 페이지에서 필수 필드를 입력합니다.

  • 이름으로 "ContosoUniversityUser"를 입력합니다.
  • 암호를 입력합니다.
  • 기본 데이터베이스로 contosouSchool 을 선택합니다.
  • contosouSchool 검사 상자를 선택합니다.

SQL_User_Properties_page

프로덕션 환경에 대한 데이터베이스 배포 구성

이제 이전 테스트 환경과 마찬가지로 패키지/게시 SQL 탭에서 데이터베이스 배포 설정을 설정할 준비가 되었습니다.

프로젝트 속성 창을 열고 패키지/게시 SQL 탭을 선택하고 구성 드롭다운 목록에서 활성(릴리스) 또는 릴리스가 선택되어 있는지 확인합니다.

각 데이터베이스에 대한 배포 설정을 구성할 때 프로덕션 환경과 테스트 환경에 대해 수행하는 작업 간의 주요 차이점은 연결 문자열을 구성하는 방식입니다. 테스트 환경의 경우 다른 대상 데이터베이스 연결 문자열을 입력했지만 프로덕션 환경의 경우 두 데이터베이스에 대해 대상 연결 문자열 동일합니다. 프로덕션 환경에서 두 데이터베이스를 하나의 데이터베이스에 배포하기 때문입니다.

멤버 자격 데이터베이스에 대한 배포 설정 구성

멤버 자격 데이터베이스에 적용되는 설정을 구성하려면 데이터베이스 항목 테이블에서 DefaultConnection-Deployment 행을 선택합니다.

대상 데이터베이스에 대한 연결 문자열에서 방금 만든 새 프로덕션 SQL Server 데이터베이스를 가리키는 연결 문자열 입력합니다. 환영 전자 메일에서 연결 문자열 받을 수 있습니다. 이메일의 관련 부분에는 다음 샘플 연결 문자열 포함되어 있습니다.

Data Source=vserver01.cytanium.com;Initial Catalog={myDataBase};User Id={myUsername};Password={myPassword};

세 변수를 바꾼 후 필요한 연결 문자열 다음 예제와 같습니다.

Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;

이 연결 문자열 복사하여 패키지/게시 SQL 탭의 대상 데이터베이스에 대한 연결 문자열에 붙여넣습니다.

기존 데이터베이스에서 데이터 및/또는 스키마 끌어오기는 여전히 선택되어 있고 데이터베이스 스크립팅 옵션은 여전히 스키마 및 데이터인지 확인합니다.

데이터베이스 스크립트 상자에서 Grant.sql 스크립트 옆의 검사 상자를 선택 취소합니다.

Disable_Grant_script

School Database에 대한 배포 설정 구성

그런 다음 데이터베이스 항목 테이블에서 SchoolContext-Deployment 행을 선택하여 School 데이터베이스 설정을 구성합니다.

멤버 자격 데이터베이스의 해당 필드에 복사한 대상 데이터베이스의 연결 문자열에 동일한 연결 문자열 복사합니다.

기존 데이터베이스에서 데이터 및/또는 스키마 끌어오기는 여전히 선택되어 있고 데이터베이스 스크립팅 옵션은 여전히 스키마 및 데이터인지 확인합니다.

데이터베이스 스크립트 상자에서 Grant.sql 스크립트 옆의 검사 상자를 선택 취소합니다.

변경 내용을 패키지/게시 SQL 탭에 저장합니다.

프로덕션 데이터베이스에 대한 연결 문자열에 대한 Web.Config 변환 설정

다음으로 배포된 Web.config 파일의 연결 문자열이 새 프로덕션 데이터베이스를 가리키도록 Web.config 변환을 설정합니다. 웹 배포에 사용할 패키지/게시 SQL 탭에 입력한 연결 문자열 옵션 추가 MultipleResultSets 를 제외하고 애플리케이션에서 사용해야 하는 것과 동일합니다.

Web.Production.config 열고 요소를 다음 예제와 같은 요소로 connectionStrings 바꿉 connectionStrings 있습니다. (컨텍스트를 connectionStrings 표시하기 위해 제공되는 주변 태그가 아닌 요소만 복사합니다.)

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
    <add name="SchoolContext" 
         connectionString="Data Source=vserver01.cytanium.com;Initial Catalog=contosouSchool;User Id=ContosoUniversityUser;Password=Password;MultipleActiveResultSets=True" 
         providerName="System.Data.SqlClient"
         xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
  </connectionStrings>
  <!-- appSettings element, comments, and system.web element -->
</configuration>

Web.config 파일에서 항상 연결 문자열을 암호화하라는 조언이 표시되는 경우가 있습니다. 회사 네트워크의 서버에 배포하는 경우에 적합할 수 있습니다. 하지만 공유 호스팅 환경에 배포하는 경우 호스팅 공급자의 보안 사례를 신뢰하며 연결 문자열을 암호화할 필요가 없거나 실용적이지 않습니다.

프로덕션 환경에 배포

이제 프로덕션에 배포할 준비가 되었습니다. 웹 배포는 프로젝트의 App_Data 폴더에 있는 SQL Server Compact 데이터베이스를 읽고 프로덕션 SQL Server 데이터베이스에 모든 테이블과 데이터를 다시 만듭니다. 패키지/웹 게시 탭 설정을 사용하여 게시하려면 프로덕션용 새 게시 프로필을 만들어야 합니다.

먼저 이전 테스트 프로필과 마찬가지로 기존 프로덕션 프로필을 삭제합니다.

솔루션 탐색기 ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 클릭합니다.

프로필 탭을 선택합니다.

프로필 관리를 클릭합니다.

프로덕션을 선택하고 제거를 클릭한 다음 닫기를 클릭합니다.

웹 게시 마법사를 닫아 이 변경 사항을 저장합니다.

다음으로, 새 프로덕션 프로필을 만들고 이를 사용하여 프로젝트를 게시합니다.

솔루션 탐색기 ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 클릭합니다.

프로필 탭을 선택합니다.

가져오기를 클릭하고 이전에 다운로드한 .publishsettings 파일을 선택합니다.

연결 탭에서 대상 URL을 올바른 임시 URL로 변경합니다. 이 예제에서는 입니다http://contosouniversity.com.vserver01.cytanium.com.

프로필 이름을 프로덕션으로 바꿉니다. 프로필 탭을 선택하고 프로필 관리를 클릭하여 이 작업을 수행합니다.

웹 게시 마법사를 닫아 변경 내용을 저장합니다.

프로덕션 환경에서 데이터베이스를 업데이트하는 실제 애플리케이션에서는 게시하기 전에 두 가지 추가 단계를 수행합니다.

  1. 프로덕션 환경에 배포 자습서와 같이 app_offline.htm업로드합니다.
  2. Cytanium 제어판의 파일 관리자 기능을 사용하여 프로덕션 사이트의 aspnet-Prod.sdfSchool-Prod.sdf 파일을 ContosoUniversity 프로젝트의 App_Data 폴더로 복사합니다. 이렇게 하면 새 SQL Server 데이터베이스에 배포하는 데이터에 프로덕션 웹 사이트의 최신 업데이트가 포함됩니다.

웹 원클릭 게시 도구 모음에서 프로덕션 프로필이 선택되어 있는지 확인한 다음 게시를 클릭합니다.

게시하기 전에 app_offline.htm 업로드한 경우 Cytanium 제어판의 파일 관리자 유틸리티를 사용하여 app_offline 삭제해야 합니다 .테스트하기 전에 htm. App_Data 폴더에서.sdf 파일을 동시에 삭제할 수도 있습니다.

이제 브라우저를 열고 공용 사이트의 URL로 이동하여 테스트 환경에 배포한 후와 동일한 방식으로 애플리케이션을 테스트할 수 있습니다.

개발에서 SQL Server Express LocalDB로 전환

개요에 설명된 대로 일반적으로 테스트 및 프로덕션에서 사용하는 것과 동일한 데이터베이스 엔진을 개발에 사용하는 것이 가장 좋습니다. (개발에서 SQL Server Express 사용하는 이점은 데이터베이스가 개발, 테스트 및 프로덕션 환경에서 동일하게 작동한다는 것입니다.) 이 섹션에서는 Visual Studio에서 애플리케이션을 실행할 때 SQL Server Express LocalDB를 사용하도록 ContosoUniversity 프로젝트를 설정합니다.

이 마이그레이션을 수행하는 가장 간단한 방법은 Code First와 멤버 자격 시스템이 새 개발 데이터베이스를 모두 만들 수 있도록 하는 것입니다. 이 메서드를 사용하여 마이그레이션하려면 다음 세 단계가 필요합니다.

  1. 연결 문자열을 변경하여 새 SQL Express LocalDB 데이터베이스를 지정합니다.
  2. 웹 사이트 관리 도구를 실행하여 관리자 사용자를 만듭니다. 그러면 멤버 자격 데이터베이스가 만들어집니다.
  3. Code First 마이그레이션 update-database 명령을 사용하여 애플리케이션 데이터베이스를 만들고 시드합니다.

Web.config 파일에서 연결 문자열 업데이트

Web.config 파일을 열고 요소를 다음 코드로 바꿉 connectionStrings 있습니다.

<connectionStrings>
  <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
  <add name="SchoolContext" connectionString="Data Source=(LocalDb)\v11.0;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\School-Dev.mdf;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

멤버 자격 데이터베이스 만들기

솔루션 탐색기 ContosoUniversity 프로젝트를 선택한 다음 프로젝트 메뉴에서ASP.NET 구성을 클릭합니다.

보안 탭을 선택합니다.

역할 만들기 또는 관리를 클릭한 다음 관리자 역할을 만듭니다.

보안 탭으로 돌아갑니다.

사용자 만들기를 클릭한 다음 관리자 검사 상자를 선택하고 admin이라는 사용자를 만듭니다.

웹 사이트 관리 도구를 닫습니다.

School Database 만들기

패키지 관리자 콘솔 창을 엽니다.

기본 프로젝트 드롭다운 목록에서 ContosoUniversity.DAL 프로젝트를 선택합니다.

다음 명령을 입력합니다.

update-database

Code First 마이그레이션 데이터베이스를 만든 다음 AddBirthDate 마이그레이션을 적용하는 초기 마이그레이션을 적용한 다음 Seed 메서드를 실행합니다.

Control-F5를 눌러 사이트를 실행합니다. 테스트 및 프로덕션 환경에서 했던 것처럼 학생 추가 페이지를 실행하고 새 학생을 추가한 다음 학생 페이지에서 새 학생을 봅니다. 이렇게 하면 School 데이터베이스가 만들어지고 초기화되었으며 해당 데이터베이스에 대한 읽기 및 쓰기 액세스 권한이 있는지 확인합니다.

크레딧 업데이트 페이지를 선택하고 로그인하여 멤버 자격 데이터베이스가 배포되었고 액세스 권한이 있는지 확인합니다. 사용자 계정을 마이그레이션하지 않은 경우 관리자 계정을 만든 다음 크레딧 업데이트 페이지를 선택하여 작동하는지 확인합니다.

SQL Server Compact 파일 정리

SQL Server Compact 지원하기 위해 포함된 파일 및 NuGet 패키지는 더 이상 필요하지 않습니다. 원하는 경우(이 단계가 필요하지 않음) 불필요한 파일 및 참조를 클린 수 있습니다.

솔루션 탐색기App_Data 폴더에서 .sdf 파일을 삭제하고 bin 폴더에서 amd64x86 폴더를 삭제합니다.

솔루션 탐색기 솔루션(프로젝트 중 하나가 아님)을 마우스 오른쪽 단추로 클릭한 다음 솔루션용 NuGet 패키지 관리를 클릭합니다.

NuGet 패키지 관리 대화 상자의 왼쪽 창에서 설치된 패키지를 선택합니다.

EntityFramework.SqlServerCompact 패키지를 선택하고 관리를 클릭합니다.

프로젝트 선택 대화 상자에서 두 프로젝트가 모두 선택됩니다. 두 프로젝트에서 패키지를 제거하려면 두 검사 상자의 선택을 취소한 다음 확인을 클릭합니다.

종속 패키지도 제거할 것인지 묻는 대화 상자에서 아니요를 클릭합니다. 이 중 하나는 유지해야 하는 Entity Framework 패키지입니다.

동일한 절차에 따라 SqlServerCompact 패키지를 제거합니다. EntityFramework.SqlServerCompact 패키지는 SqlServerCompact 패키지에 따라 달라지므로 패키지를 이 순서대로 제거해야 합니다.

이제 SQL Server Express 및 전체 SQL Server 성공적으로 마이그레이션되었습니다. 다음 자습서에서는 다른 데이터베이스를 변경하고 테스트 및 프로덕션 데이터베이스에서 SQL Server Express 및 전체 SQL Server 사용할 때 데이터베이스 변경 내용을 배포하는 방법을 알아보세요.