다음을 통해 공유


데이터베이스 배포(C#)

작성자 : Scott Mitchell

ASP.NET 웹 애플리케이션을 배포하려면 개발 환경에서 프로덕션 환경으로 필요한 파일과 리소스를 가져오는 것이 필요합니다. 데이터 기반 웹 애플리케이션의 경우 데이터베이스 스키마 및 데이터가 포함됩니다. 이 자습서는 개발 환경에서 프로덕션으로 데이터베이스를 성공적으로 배포하는 데 필요한 단계를 살펴보는 시리즈의 첫 번째 자습서입니다.

소개

ASP.NET 웹 애플리케이션을 배포하려면 개발 환경에서 프로덕션 환경으로 필요한 파일과 리소스를 가져오는 것이 필요합니다. 지난 6개의 자습서를 통해 간단한 Book Reviews 웹 애플리케이션을 배포하는 과정을 살펴보았습니다. 이 데모 사이트는 이미지 및 CSS 파일과 같은 클라이언트 쪽 리소스와 함께 ASP.NET 페이지, Web.sitemap 구성 파일, 파일 등 다양한 서버 쪽 리소스로 구성되었습니다. 하지만 데이터 기반 웹 애플리케이션은 어떨까요? 데이터베이스를 사용하는 웹 애플리케이션을 배포하려면 어떤 추가 단계를 수행해야 합니까?

다음 몇 가지 자습서에서는 데이터 기반 웹 애플리케이션을 배포하는 데 필요한 단계를 다룹니다. 이 자습서는 먼저 개발 환경에서 프로덕션 환경으로 데이터베이스 스키마 및 콘텐츠를 가져오는 방법을 검사하는 한편, 후속 자습서에서는 필요한 구성 변경 내용을 살펴봅니다. 그런 다음, Application Services(멤버 자격, 역할, 프로필 등)를 사용하는 데이터베이스를 배포하는 문제를 살펴봅니다.

업데이트된 책 검토 웹 애플리케이션 검사

데이터 기반 웹 애플리케이션을 배포하는 방법을 설명하기 위해 간단한 정적 웹 사이트에서 데이터 기반 웹 사이트로 Book Reviews 웹 애플리케이션을 업데이트했습니다. 이전과 마찬가지로 이 자습서의 다운로드에는 웹 애플리케이션 프로젝트 모델을 사용하는 버전과 웹 사이트 프로젝트 모델을 사용하는 애플리케이션의 두 가지 버전이 있습니다.

업데이트된 Book Reviews 웹 애플리케이션은 사이트 App_Data 폴더(~/App_Data/Reviews.mdf)에 저장된 SQL Server 2008 Express Edition 데이터베이스를 사용합니다. 컴퓨터에 SQL Server 2008이 설치되어 있는 경우 데모가 오류 없이 실행되어야 합니다. 이전 버전의 SQL Server 있는 경우 무료 SQL Server 2008 Express Edition을 설치하거나 이 자습서 다운로드에서 사용할 수 있는 데이터베이스 스크립트를 사용하여 데이터베이스를 직접 만들 수 있습니다.

데이터베이스에는 Reviews.mdf 다음 4개의 테이블이 포함되어 있습니다.

  • Genres - 기술, 소설 및 비즈니스와 같은 각 장르에 대한 레코드를 포함합니다.
  • Books- 각 검토에 대한 레코드를 포함하며, 열은 , GenreId, ReviewDate및 등Review과 같습니다Title.
  • Authors - 검토된 책에 기여한 각 저자에 대한 정보를 포함합니다.
  • BooksAuthors - 저자가 어떤 책을 썼는지를 지정하는 다대다 조인 테이블입니다.

그림 1에서는 이러한 4개의 테이블의 ER 다이어그램을 보여 줍니다.

책 리뷰 웹 애플리케이션의 데이터베이스는 4개의 테이블로 구성됩니다.

그림 1: 책 리뷰 웹 애플리케이션 데이터베이스는 4개의 테이블로 구성됩니다(전체 크기 이미지를 보려면 클릭).

이전 버전의 책 리뷰 웹 사이트에는 각 책에 대한 별도의 ASP.NET 페이지가 있었습니다. 예를 들어 24시간 ASP.NET 3.5에 대한 리뷰가 포함된 라는 ~/Tech/TYASP35.aspx 페이지가 있었습니다. 이 새 데이터 기반 버전의 웹 사이트에는 데이터베이스에 저장된 리뷰와 지정된 책에 대한 리뷰를 표시하는 단일 ASP.NET 페이지인 Review.aspx?ID=bookId가 있습니다. 마찬가지로 지정된 장르에서 검토된 책을 나열하는 Genre.aspx?ID=genreId 페이지가 있습니다.

그림 2와 3은 작동 중인 Genre.aspxReview.aspx 페이지를 보여 줍니다. 각 페이지의 주소 표시줄에 URL을 적어 둡니다. 그림 2에서는 Genre.aspx?ID=85d164ba-1123-4c47-82a0-c8ec75de7e0e입니다. 85d164ba-1123-4c47-82a0-c8ec75de7e0e는 기술 장르의 값이므로 GenreId 페이지 제목은 "기술 리뷰"를 읽고 글머리 기호 목록은 이 장르에 속하는 사이트에서 해당 리뷰를 열거합니다.

기술 장르 페이지

그림 2: 기술 장르 페이지(전체 크기 이미지를 보려면 클릭)

자신을 가르치기위한 검토는 24 시간 ASP.NET 3.5입니다.

그림 3: 자신을 가르치기 위한 검토 ASP.NET 24시간 동안 3.5 (전체 크기 이미지를 보려면 클릭)

Book Reviews 웹 애플리케이션에는 관리자가 장르, 리뷰 및 작성자 정보를 추가, 편집 및 삭제할 수 있는 관리 섹션도 포함되어 있습니다. 현재 모든 방문자는 관리 섹션에 액세스할 수 있습니다. 이후 자습서에서는 사용자 계정에 대한 지원을 추가하고 권한 있는 사용자만 관리 페이지에 허용합니다.

Book Reviews 애플리케이션을 다운로드하는 경우 해당 용도는 데이터 기반 애플리케이션 배포를 시연하는 것입니다. 애플리케이션 디자인에 대한 모범 사례는 표시되지 않습니다. 예를 들어 별도의 DAL(데이터 액세스 계층)은 없습니다. ASP.NET 페이지는 SqlDataSource 컨트롤을 통해 데이터베이스와 직접 통신하거나 코드 숨김 클래스의 코드를 ADO.NET. 계층화된 아키텍처를 사용하여 데이터 기반 애플리케이션을 만드는 방법에 대한 자세한 내용은 데이터 작업 자습서를 참조하세요.

개발 및 프로덕션의 데이터베이스

데이터 기반 웹 애플리케이션에서 개발을 시작할 때 데이터베이스에 연결하는 방법에 대한 애플리케이션 세부 정보를 제공하는 데이터베이스 연결 문자열 지정해야 합니다. 이 연결 문자열 데이터베이스 서버, 데이터베이스 이름 및 보안 정보를 지정합니다. 대부분의 경우 개발 중에 애플리케이션에서 사용하는 데이터베이스는 프로덕션 환경에서 사용되는 데이터베이스와 다릅니다. 개발과 프로덕션에 서로 다른 데이터베이스를 사용할 경우 많은 이점이 있습니다. 개발에 다른 데이터베이스가 있다는 것은 실수로 라이브 데이터를 수정하거나 삭제하는 것에 대해 걱정할 필요가 없다는 것을 의미합니다. 또한 더미 테스트 데이터를 배치하거나 프로덕션 환경에서 애플리케이션에 미치는 영향에 대해 걱정할 필요 없이 데이터 모델을 호환성이 손상되는 변경 작업을 수행할 수 있습니다. 개발 및 프로덕션 환경에서 다른 데이터베이스를 갖는 단점은 애플리케이션이 배포될 때 데이터베이스를 배포하고 데이터베이스 스키마 또는 데이터에 대한 관련 변경 내용도 배포해야 한다는 것입니다.

첫 번째 배포 전에는 데이터베이스의 instance 하나만 있으며 해당 instance 개발 환경에 있습니다. 애플리케이션을 처음으로 프로덕션에 배포할 때 필요한 서버 쪽 및 클라이언트 쪽 파일을 복사할 뿐만 아니라 개발 환경에서 프로덕션 환경으로 데이터베이스를 복사해야 합니다. 현재는 Book Reviews 웹 애플리케이션을 사용하여 데이터베이스가 개발 환경의 App_Data 폴더에 있지만 아직 프로덕션 환경으로 푸시되지 않았습니다.

애플리케이션이 배포되면 데이터베이스 복사본이 두 개 있습니다. 애플리케이션이 완성되면 데이터 모델을 변경해야 하는 새로운 기능이 추가될 수 있습니다(예: 기존 테이블에 새 열 추가, 기존 열 변경, 새 테이블 추가 등). 웹 애플리케이션이 다음에 배포되면 마지막 배포 이후 개발 환경의 데이터베이스에 적용된 변경 내용을 프로덕션 데이터베이스에 적용해야 합니다. 이 프로세스를 관리하기 위한 몇 가지 전략은 이후 자습서에서 설명합니다. 이 자습서에서는 개발 환경에서 프로덕션으로 전체 데이터베이스를 배포하는 데 중점을 둡니다.

프로덕션 환경에 데이터베이스 배포

이 자습서의 나머지 부분에서는 개발 환경에서 프로덕션 환경으로 데이터베이스를 배포하는 방법을 살펴봅니다. 팔로우하는 경우 웹 호스트 공급자를 사용하는 계정에 Microsoft SQL Server 데이터베이스 지원이 포함되어 있는지 확인해야 합니다. 또한 데이터베이스 서버 이름, 데이터베이스 이름, 데이터베이스에 연결하는 데 사용되는 사용자 이름 및 암호와 같은 일부 정보가 있어야 합니다.

이 자습서의 앞부분에서 설명한 것처럼 Book Reviews 웹 사이트의 데이터베이스는 폴더에 App_Data 저장된 SQL Server 2008 Express Edition 데이터베이스입니다. 이러한 데이터베이스를 배포하는 것은 개발 환경에서 프로덕션 환경으로 폴더를 복사하는 App_Data 것만큼 간단할 것이라고 추론할 수 있습니다. 그러나 대부분의 웹 호스트 공급자는 보안상의 이유로 폴더에서 데이터베이스 호스팅을 App_Data 지원하지 않습니다. 대신 웹 호스트는 환경 내의 SQL Server 데이터베이스 서버에 계정을 제공합니다. 개발 환경에서 프로덕션 환경으로 데이터베이스를 배포하려면 데이터베이스를 웹 호스트의 데이터베이스 서버에 등록해야 합니다.

그렇다면 개발 환경에서 프로덕션 환경으로 데이터베이스를 어떻게 가져올 수 있을까요? 웹 호스트에서 제공하는 서비스에 따라 이 작업을 수행하는 몇 가지 방법이 있습니다. DiscountASP.NET 같은 일부 호스트에서는 데이터베이스 또는 실제 .mdf 파일의 백업을 웹 사이트에 FTP한 다음, 제어판 백업 파일을 복원하거나 파일을 SQL Server 데이터베이스 서버에 연결할 .mdf 수 있습니다. 이러한 도구를 사용하여 데이터베이스를 배포하는 것은 폴더를 프로덕션 환경에 복사한 App_Data 다음 제어판 통해 연결하는 것만큼 간단합니다. 데이터베이스를 처음으로 게시하는 가장 쉽고 빠른 방법일 수 있습니다.

또 다른 방법은 데이터베이스 게시 마법사를 사용하는 것입니다. 데이터베이스 게시 마법사는 SQL 명령을 생성하여 테이블, 저장 프로시저, 뷰, 사용자 정의 함수 등 데이터베이스 스키마를 만들고 필요에 따라 해당 테이블의 데이터를 생성하는 Windows 데스크톱 애플리케이션입니다. 그런 다음 SQL Server Management Studio 통해 웹 호스트 공급자의 데이터베이스 서버에 연결한 다음 이 스크립트를 실행하여 프로덕션 환경에서 데이터베이스를 복제할 수 있습니다. 웹 호스트 공급자가 Microsoft의 데이터베이스 게시 서비스를 지원하는 경우 데이터베이스 게시 마법사에서 생성된 스크립트가 사용자를 대신하여 데이터베이스 서버에서 자동으로 실행되도록 할 수 있습니다. 데이터베이스 게시 마법사는 데이터베이스 스키마 및 데이터를 만드는 스크립트를 생성하므로 웹 호스트 공급자가 업로드된 .mdf 파일 연결과 같은 기능을 제공하는지 여부에 관계없이 작동합니다.

데이터베이스 게시 마법사를 사용하여 데이터베이스 스키마 및 데이터를 만드는 SQL 명령 생성

데이터베이스 게시 마법사를 사용하여 Book Reviews 데이터베이스를 프로덕션에 배포해 보겠습니다. Visual Studio 2008 이상을 사용하는 경우 데이터베이스 게시 마법사가 이미 설치되어 있습니다.

Visual Studio를 열고 데이터베이스로 Reviews.mdf 이동합니다. Visual Web Developer를 사용하는 경우 데이터베이스 Explorer 이동합니다. Visual Studio를 사용하는 경우 서버 Explorer 사용합니다. 그림 4는 Visual Web Developer의 데이터베이스 Explorer 데이터베이스를 보여줍니다Reviews.mdf. 그림 4에서 Reviews.mdf 알 수 있듯이 데이터베이스는 4개의 테이블, 3개의 저장 프로시저 및 사용자 정의 함수로 구성됩니다.

데이터베이스 Explorer 또는 서버 Explorer 데이터베이스를 찾습니다.

그림 4: 데이터베이스 Explorer 또는 서버 Explorer 데이터베이스 찾기(전체 크기 이미지를 보려면 클릭)

데이터베이스 이름을 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 "공급자에 게시" 옵션을 선택합니다. 그러면 데이터베이스 게시 마법사가 시작됩니다(그림 5 참조). 다음을 클릭하여 시작 화면을 지나서 진행합니다.

시작 화면과 마법사를 진행하기 위한 다음 단추를 보여 주는 데이터베이스 게시 마법사 창의 스크린샷

그림 5: 데이터베이스 게시 마법사 시작 화면(전체 크기 이미지를 보려면 클릭)

마법사의 두 번째 화면에는 데이터베이스 게시 마법사에 액세스할 수 있는 데이터베이스가 나열되어 있으며 선택한 데이터베이스의 모든 개체를 스크립팅할지 아니면 스크립팅할 개체를 선택할지 선택할 수 있습니다. 적절한 데이터베이스를 선택하고 "선택한 데이터베이스의 모든 개체 스크립트" 옵션을 선택된 상태로 둡니다.

참고

그림 6에 표시된 화면에서 다음을 클릭할 때 "이 마법사에서 스크립팅할 수 있는 형식의 database databaseName 에 개체가 없습니다." 오류가 발생하면 데이터베이스 파일의 경로가 지나치게 길지 않은지 확인합니다. 데이터베이스 파일의 경로가 너무 길면 이 오류가 발생할 수 있습니다.

데이터베이스 목록의 강조 표시된 데이터베이스와 채워진 모든 개체 스크립트 확인란을 보여 주는 데이터베이스 게시 마법사 창의 스크린샷

그림 6: 데이터베이스 게시 마법사 시작 화면(전체 크기 이미지를 보려면 클릭)

다음 화면에서 스크립트 파일을 생성하거나 웹 호스트가 지원하는 경우 데이터베이스를 웹 호스트 공급자의 데이터베이스 서버에 직접 게시할 수 있습니다. 그림 7에서 보여 주듯이 파일에 C:\REVIEWS.MDF.sql스크립트를 쓰고 있습니다.

데이터베이스를 파일에 스크립팅하거나 웹 호스트 공급자에 직접 게시

그림 7: 데이터베이스를 파일에 스크립팅하거나 웹 호스트 공급자에 직접 게시(전체 크기 이미지를 보려면 클릭)

후속 화면에서는 다양한 스크립팅 옵션을 묻는 메시지를 표시합니다. 이러한 기존 개체를 제거하기 위해 스크립트에 drop 문을 포함할지 여부를 지정할 수 있습니다. 이 기본값은 True로 설정되며, 데이터베이스를 처음으로 배포할 때는 괜찮습니다. 대상 데이터베이스가 SQL Server 2000, SQL Server 2005 또는 SQL Server 2008인지 여부를 지정할 수도 있습니다. 마지막으로 스키마와 데이터를 스크립팅할지, 데이터만 스크립팅할지 아니면 스키마만 스크립팅할지 여부를 나타낼 수 있습니다. 스키마는 데이터베이스 개체, 테이블, 저장 프로시저, 뷰 등의 컬렉션입니다. 데이터는 테이블에 있는 정보입니다.

그림 8에서 알 수 있듯이 기존 데이터베이스 개체를 삭제하고, SQL Server 2008 데이터베이스에 대한 스크립트를 생성하고, 스키마와 데이터를 모두 게시하도록 마법사를 구성했습니다.

게시 옵션 지정

그림 8: 게시 옵션 지정(전체 크기 이미지를 보려면 클릭)

마지막 두 화면에서는 수행할 작업을 요약한 다음 스크립팅의 상태 표시합니다. 마법사를 실행한 결과 프로덕션에서 데이터베이스를 만들고 개발과 동일한 데이터로 채우는 데 필요한 SQL 명령이 포함된 스크립트 파일이 있습니다.

프로덕션 환경 데이터베이스에서 SQL 명령 실행

이제 데이터베이스를 만드는 SQL 명령과 해당 데이터를 포함하는 스크립트가 있으므로 프로덕션 데이터베이스에서 스크립트를 실행하기만 하면 됩니다. 일부 웹 호스트 공급자는 데이터베이스에서 실행할 SQL 명령을 입력할 수 있는 제어판 텍스트 상자를 제공합니다. 매우 큰 스크립트 파일이 있는 경우 이 옵션이 작동하지 않을 수 있습니다(REVIEWS.MDF.sql스크립트 파일의 크기는 instance 425KB 이상임).

더 나은 방법은 SSMS(SQL Server Management Studio)를 사용하여 프로덕션 데이터베이스 서버에 직접 연결하는 것입니다. 컴퓨터에 비 Express 버전의 SQL Server 설치되어 있는 경우 SSMS가 이미 설치되어 있을 수 있습니다. 그렇지 않으면 SQL Server Management Studio Express Edition의 무료 복사본을 다운로드하여 설치할 수 있습니다.

SSMS를 시작하고 웹 호스트 공급자가 제공한 정보를 사용하여 웹 호스트의 데이터베이스 서버에 연결합니다.

텍스트 필드에 있는 웹 호스트의 데이터 서버 정보를 보여주는 서버에 연결 대화 상자의 스크린샷

그림 9: 웹 호스트 공급자의 데이터베이스 서버에 연결(전체 크기 이미지를 보려면 클릭)

데이터베이스 탭을 확장하고 데이터베이스를 찾습니다. 도구 모음의 왼쪽 위 모서리에 있는 새 쿼리 단추를 클릭하고 데이터베이스 게시 마법사에서 만든 스크립트 파일의 SQL 명령을 붙여넣고 실행 단추를 클릭하여 프로덕션 데이터베이스 서버에서 이러한 명령을 실행합니다. 스크립트 파일이 특히 큰 경우 명령을 실행하는 데 몇 분 정도 걸릴 수 있습니다.

스크립트 파일의 명령이 프로덕션 서버에서 실행되는 것을 보여주는 Microsoft SQL Server Management Studio 창의 스크린샷

그림 10: 웹 호스트 공급자의 데이터베이스 서버에 연결(전체 크기 이미지를 보려면 클릭)

그게 전부입니다! 이 시점에서 개발 데이터베이스는 프로덕션에 복제되었습니다. SSMS에서 데이터베이스를 새로 고치면 새 데이터베이스 개체가 표시됩니다. 그림 11은 개발 데이터베이스에 있는 테이블을 미러 프로덕션 데이터베이스의 테이블, 저장 프로시저 및 사용자 정의 함수를 보여 줍니다. 또한 데이터베이스 게시 마법사에 데이터를 게시하도록 지시했기 때문에 프로덕션 데이터베이스의 테이블에는 마법사가 실행될 당시의 개발 데이터베이스 테이블과 동일한 데이터가 있습니다. 그림 12는 프로덕션 데이터베이스의 Books 테이블에 있는 데이터를 보여줍니다.

데이터베이스 개체가 프로덕션 데이터베이스에서 중복되었습니다.

그림 11: 데이터베이스 개체가 프로덕션 데이터베이스에서 중복되었습니다(전체 크기 이미지를 보려면 클릭).

프로덕션 데이터베이스에는 개발 데이터베이스와 동일한 데이터가 포함됩니다.

그림 12: 프로덕션 데이터베이스에 개발 데이터베이스와 동일한 데이터가 포함되어 있습니다(전체 크기 이미지를 보려면 클릭).

이 시점에서 개발 데이터베이스만 프로덕션에 배포했습니다. 아직 웹 애플리케이션 자체를 배포하는 방법을 살펴보지 않았거나 프로덕션 환경에서 애플리케이션이 프로덕션 데이터베이스를 사용하도록 하려면 어떤 구성 변경이 필요한지 검토하지 않았습니다. 다음 자습서에서는 이러한 문제를 다룹니다.

요약

데이터 기반 웹 애플리케이션을 배포하려면 개발 중에 사용되는 데이터베이스를 프로덕션 환경에 복사해야 합니다. 많은 웹 호스트 공급자는 데이터베이스 배포 프로세스를 간소화하는 도구를 제공합니다. 예를 들어 DiscountASP.NET 사용하여 데이터베이스 .mdf 파일(또는 백업)을 FTP한 다음 제어판 데이터베이스 서버에 데이터베이스를 연결할 수 있습니다. 웹 호스트 공급자가 제공하는 기능에 관계없이 작동하는 또 다른 옵션은 개발 데이터베이스 스키마 및 데이터를 만드는 SQL 명령 스크립트를 생성하는 Microsoft 데이터베이스 게시 마법사 도구입니다. 이 스크립트가 생성되면 프로덕션 데이터베이스에서 실행할 수 있습니다.

Book Reviews 웹 애플리케이션의 데이터베이스가 프로덕션 환경에 있으므로 애플리케이션을 배포할 수 있습니다. 그러나 웹 애플리케이션의 구성 정보는 데이터베이스에 대한 연결 문자열 지정하고 연결 문자열 개발 데이터베이스를 참조합니다. 프로덕션에 사이트를 배포할 때 이 연결 문자열 정보를 업데이트해야 합니다. 다음 자습서에서는 이러한 구성 차이점을 살펴보고 데이터 기반 Book Reviews 사이트를 프로덕션에 게시하는 데 필요한 단계를 안내합니다.

행복한 프로그래밍!

추가 정보

이 자습서에서 설명하는 topics 대한 자세한 내용은 다음 리소스를 참조하세요.