다음을 통해 공유


ASP.NET에서 SQL Server Express Edition 사용

업데이트: 2007년 11월

Microsoft SQL Server 2005 Express Edition에서는 응용 프로그램 빌드를 위한 간결한 데이터베이스 솔루션을 제공합니다. SQL Server Express Edition은 Transact-SQL, 저장 프로시저, 뷰, 트리거, SQLCLR(SQL Server CLR Integration) 및 XML 데이터 형식을 비롯한 전체 SQL Server 2005 프로그래밍 모델을 지원합니다. SQL Server Express Edition을 데이터 소스로 사용하여 응용 프로그램을 개발하면 응용 프로그램과 SQL Server 2005를 실행하는 프로덕션 서버와의 호환성이 보장됩니다.

SQL Server Express Edition 데이터베이스에 연결

여타의 SQL Server 데이터베이스에 연결할 때와 마찬가지로 데이터베이스 서버를 로컬 Server Express Edition 데이터 소스로 지정함으로써 SQL Server Express Edition 데이터베이스에 연결할 수 있습니다. 예를 들어 다음 연결 문자열에서는 Customers라는 데이터베이스에 연결합니다.

Data Source=.\SQLEXPRESS;Initial Catalog=Customers;Integrated Security=True;

연결할 데이터베이스 파일을 InitialCatalog 또는 Database 연결 문자열 특성 대신 AttachDBFilename 연결 문자열 특성을 사용하여 지정할 수도 있습니다. 파일 이름을 사용하여 데이터베이스에 연결하면 대상 서버에서 SQL Server Express Edition을 실행하는 경우 데이터베이스를 응용 프로그램과 함께 배포하는 작업이 간소화됩니다. 예를 들어 다음 연결 문자열에서는 Customers.mdf 파일에 저장된 데이터베이스에 연결합니다.

Data Source=.\SQLEXPRESS;AttachDbFileName=e:\data\Customers.mdf;Integrated Security=True;User Instance=True

ASP.NET은 웹 응용 프로그램의 App_Data 디렉터리에 데이터를 저장하는 간편한 옵션을 제공합니다. App_Data 디렉터리의 내용은 웹 요청의 응답으로 제공되지 않으므로 응용 프로그램의 데이터 보안이 향상됩니다. 응용 프로그램의 App_Data 디렉터리에 대한 파일 경로 대신 |DataDirectory| 연결 문자열을 사용할 수 있다는 것도 편리한 점입니다. 멤버 자격에 대한 SqlDataSource 컨트롤 또는 공급자, 역할, 사용자 프로필, 웹 파트 개인 설정 등의 ASP.NET 기능에서는 데이터베이스 연결을 열 때 |DataDirectory| 연결 문자열 변수를 App_Data 디렉터리에 대한 파일 경로로 자동으로 대체합니다. 따라서 웹 응용 프로그램이 다른 디렉터리로 이동하더라도 데이터베이스에 대한 경로가 최신 상태로 유지됩니다. 다음 코드 예제에서는 |DataDirectory| 연결 문자열 변수가 포함된 연결 문자열을 보여 줍니다.

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Customers.mdf;Integrated Security=True;User Instance=True
참고:

SQL Server Express Edition에서는 User Instance가 true로 설정된 연결 문자열로 연결할 때 .mdf 파일에 대한 단일 연결만 허용됩니다.

Visual Web Developer에서 유지하는 연결은 솔루션 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 분리 옵션을 선택하거나, 서버 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 연결 닫기를 선택하여 닫을 수 있습니다. 웹 응용 프로그램을 실행하거나 디버깅하면 열려 있는 모든 데이터베이스 연결을 Visual Web Developer에서 자동으로 닫습니다.

또한 SQL Server Express Edition 데이터베이스에 대해 열려 있는 연결을 해제해야 하는 경우 IIS 관리자(인터넷 정보 서비스 관리자)를 사용하여 웹 응용 프로그램을 언로드할 수 있습니다. 웹 응용 프로그램의 루트 디렉터리에 App_offline.htm이라는 HTML 파일을 추가하여 웹 응용 프로그램을 언로드할 수도 있습니다. 웹 응용 프로그램이 웹 요청에 다시 응답하도록 하려면 App_offline.htm 파일을 제거하기만 하면 됩니다. 데이터베이스를 새 위치로 복사하거나 이동하려는 경우 SQL Server Express Edition 데이터베이스에 대해 열려 있는 연결을 해제해야 합니다.

SQL Server Express Edition 데이터베이스 설정

Visual Web Developer에서는 SQL Server Express Edition 데이터베이스를 만들고, 테이블 및 저장 프로시저 등의 데이터베이스 요소를 관리하고, 데이터베이스에 대한 연결을 관리하는 데 도움이 되는 도구를 제공합니다. 서버 탐색기 창에서 이들 기능에 액세스할 수 있습니다. SQL Server Express Edition 데이터베이스를 만드는 데 대한 자세한 내용은 방법: SQL Server Express Edition 데이터베이스 만들기를 참조하십시오.

SQL Server Express Edition을 실행 중인 컴퓨터 연결하고 CREATE DATABASE 명령을 입력하거나, SQL Server Express Edition에서 제공하는 SQL Server 관리 도구를 사용하여 SQL Server Express Edition 데이터베이스를 만들 수도 있습니다.

SQL Server 데이터베이스에 데이터를 저장하는 ASP.NET 기능(멤버 자격, 역할, 사용자 프로필, 웹 파트 개인 설정 등)의 기본 공급자는 응용 프로그램의 App_Data 디렉터리에 있는 Aspnetdb.mdf SQL Server Express Edition 데이터베이스에 연결하도록 구성됩니다. 기본 공급자를 사용하여 이러한 데이터 저장 기능 중 하나를 활성화한 경우, 응용 프로그램의 App_Data 디렉터리에 Aspnetdb.mdf SQL Server Express Edition 데이터베이스가 없으면 이 데이터베이스가 자동으로 생성됩니다. 응용 프로그램의 App_Data 디렉터리가 없는 경우 이 디렉터리도 자동으로 생성됩니다.

사용자 인스턴스

SQL Server Express Edition에서는 사용자 인스턴스를 지원합니다. 즉, SQL Server Express Edition 데이터베이스에 연결하는 각 사용자에 대해 새 프로세스가 시작됩니다. 프로세스의 ID는 연결을 연 사용자입니다. ASP.NET 응용 프로그램의 ID를 확인하는 데 대한 자세한 내용은 ASP.NET 가장을 참조하십시오.

로컬 데이터베이스 프로젝트에 연결하면 Visual Web Developer는 기본적으로 사용자 인스턴스가 활성화된 SQL Server Express Edition 데이터베이스에 연결합니다. 예를 들어 다음 코드 예제에서는 Visual Web Developer에서 SQL Server Express Edition 데이터베이스에 연결하는 데 일반적으로 사용하는 연결 문자열을 보여 줍니다.

Data Source=.\SQLEXPRESS;AttachDbFileName=|DataDirectory|Database.mdf;Integrated Security=True;User Instance=True

사용자 인스턴스 활성화는 데스크톱 개발에 적합하지만, 여러 고객의 사이트를 호스팅하므로 응용 프로그램이 구분되어야 하고 보안이 중요한 웹 서버에서는 작업자 프로세스를 시작하는 것이 적절하지 않습니다. 동일한 프로세스 ID로 실행되는 ASP.NET 응용 프로그램은 동일한 사용자 인스턴스에 연결할 수 있습니다. Windows 2000 및 Windows XP Professional에서 모든 ASP.NET 응용 프로그램은 동일한 프로세스 ID(기본적으로 로컬 ASPNET 계정)로 실행되고 Windows Server 2003에서 동일한 응용 프로그램 풀에 있는 ASP.NET 응용 프로그램은 동일한 프로세스 ID(기본적으로 NETWORK SERVICE 계정)로 실행되므로, 서로 신뢰할 수 없는 응용 프로그램을 포함하는 공유 호스팅 서버에서는 명시적으로 사용자 인스턴스를 해제해야 합니다. 명령 프롬프트에서 osql –E –S .\SQLEXPRESS 명령을 입력하는 등의 방법을 사용하여 SQL Server Express Edition 인스턴스에 연결하고 다음 Transact-SQL 명령을 입력하면 이 기능을 해제할 수 있습니다.

EXEC sp_configure 'show advanced option', '1'

GO

RECONFIGURE WITH OVERRIDE

GO

EXEC sp_configure 'user instances enabled', 0

GO

RECONFIGURE WITH OVERRIDE

GO

SQL Server Express Edition 데이터베이스 배포

SQL Express Edition 데이터베이스는 두 개의 파일로 구성됩니다. .mdf 파일에는 데이터베이스 스키마와 데이터가 포함되고, .ldf 파일에는 데이터베이스의 로그 정보가 포함됩니다. 웹 사이트 복사 도구를 사용하여 웹 사이트를 배포하면 SQL Server Express Edition 데이터베이스 파일도 복사됩니다. 대상 서버에 SQL Server Express Edition이 설치되어 있으면 응용 프로그램이 문제없이 계속 실행됩니다. 자세한 내용은 방법: 웹 사이트 복사 도구를 사용하여 웹 사이트 파일 복사를 참조하십시오.

SQL Server Express Edition 데이터베이스를 배포하는 다른 옵션은 다음과 같습니다.

  • SQL Server Express Edition 데이터베이스에 파일 기반 방식으로 연결하는 경우 XCopy, FTP 등의 도구를 사용하여 응용 프로그램과 함께 이들 파일을 SQL Server Express Edition이 설치된 대상 서버에 복사할 수 있습니다.

  • SQL Server Express Edition에서는 다른 버전의 SQL Server 2005와 동일한 파일 형식을 사용하므로, SQL Server를 실행 중인 서버에 .mdf 및 .ldf 파일을 복사한 다음 이들 파일을 데이터베이스로 첨부할 수 있습니다.

  • 데이터베이스 스키마가 포함되어 있지만 데이터가 없는 빈 SQL Server Express Edition 데이터베이스를 복사하려는 경우, SQL Server 관리 도구를 통해 생성한 스크립트를 대상 데이터베이스에서 실행하여 개발 데이터베이스에서 스키마를 복제할 수 있습니다.

참고:

서로 신뢰할 수 없는 여러 사이트를 호스팅하는 웹 서버에 SQL Server Express Edition 데이터베이스를 배포하는 경우, 파일 기반 연결이나 사용자 인스턴스를 사용하면 데이터가 서버에 있는 다른 응용 프로그램에 노출될 우려가 있습니다. 이러한 경우 SQL Server Express Edition 데이터베이스의 내용을 배포된 ASP.NET 응용 프로그램에서 액세스할 수 있는 다른 버전의 SQL Server 2005로 마이그레이션하는 것이 좋습니다.

SQL Server Express Edition 데이터베이스에 암호화된 정보가 포함되어 있는 경우(예: 멤버 자격 데이터베이스에 저장된 부호화된 암호) 대상 서버에 암호화 키도 복사했는지 확인해야 합니다.

전체 SQL Server Express Edition 데이터베이스를 이동하려면 데이터베이스에 대해 열려 있는 연결이 없도록 해야 합니다. 열려 있는 연결이 있으면 데이터베이스가 잠기게 됩니다.

잠긴 데이터베이스 잠금 해제

데이터베이스에 대해 연결이 열려 있는 경우 데이터베이스가 잠겨 이동하거나 삭제할 수 없게 됩니다. 열린 연결은 ASP.NET 응용 프로그램, Visual Studio 또는 기타 프로그램이나 데이터베이스 클라이언트에 의해 유지될 수 있습니다. 데이터베이스의 잠금을 해제하려면 데이터베이스에 대해 열린 연결을 모두 닫아야 합니다. 다음과 같은 방법을 사용하여 열린 연결을 닫을 수 있습니다.

  • Visual Web Developer에서 유지하는 연결은 솔루션 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 분리 옵션을 선택하거나, 서버 탐색기에서 데이터베이스를 마우스 오른쪽 단추로 클릭하고 연결 닫기를 선택하여 닫을 수 있습니다. 웹 응용 프로그램을 실행하거나 디버깅하면 열려 있는 모든 데이터베이스 연결을 Visual Web Developer에서 자동으로 닫습니다.

  • ASP.NET 응용 프로그램에서 유지하는 연결은 응용 프로그램을 종료하여 닫을 수 있습니다. IIS 관리자를 사용하거나, ASP.NET 응용 프로그램의 루트 디렉터리에 App_offline.htm이라는 파일을 배치하면 이를 수행할 수 있습니다. 응용 프로그램을 다시 시작하려면 이 파일을 제거해야 합니다.

  • Windows Forms 응용 프로그램과 같은 다른 소스에서 유지하는 연결은 프로그램을 종료하여 닫을 수 있습니다.

참고 항목

개념

ASP.NET 프로필 속성 개요

기타 리소스

ASP.NET을 사용하여 데이터 액세스

멤버 자격을 사용하여 사용자 관리

역할을 사용하여 권한 부여 관리