VWD2005에는 간단한 데이터베이스 솔루션으로 응용 프로그램을 구축하려는 비전문 개발자나 열정적인 개발자를 대상으로 하는 SQL Server 2005의 무료 버전인 SQL Server 2005 Express Edition이 포함되어 있습니다. SQL Server Express는 SQLCLR, T-SQL, 저장 프로시저, 뷰, 트리거 및 XML 데이터 유형과 같은 완전한 SQL Server 프로그래밍 모델을 지원하므로 SQL Server Express를 사용하여 이러한 기술에 대해 배우고 응용 프로그램이 실행될 수 있는지 확인할 수 있습니다. 더 높은 수준의 플랫폼(예: SQL Server Enterprise Edition). SQL Server Express는 다운로드 및 설치가 쉽고(36MB 미만) Visual Studio 2005 및 Visual Web Developer 2005에 포함되어 있습니다.
Visual Studio에는 SQL Server Express 데이터베이스를 관리하는 데 사용할 수 있는 데이터베이스 탐색기 및 쿼리 작성기와 같은 데이터베이스 관리 도구가 포함되어 있습니다. Visual Studio는 프로젝트의 일부로 SQL Server Express 데이터베이스를 구축하기 위한 새로운 파일 기반 데이터베이스도 지원합니다. 동시에 Visual Studio 2005 및 SQL Server 2005 Express는 다음 기능을 포함하여 데이터 기반 웹 응용 프로그램을 구축하고 배포하기 위한 완벽한 솔루션을 제공합니다.
· 데이터베이스 프로젝트 데이터 항목
· 로컬 데이터베이스 연결
· 데이터베이스 브라우저 관리
· 상대 경로 연결 문자열
· XCopy 배포 지원
· 통합 디버깅 지원
이 문서에서는 Visual Studio 2005의 파일 기반 데이터베이스 접근 방식과 디자이너가 이러한 데이터베이스를 만들고 사용하는 방법을 설명합니다.
Visual Web Developer 및 DataVisual
Web Developer는 웹 애플리케이션과 함께 데이터베이스를 사용하기 위한 다양한 도구를 제공합니다. 데이터베이스 브라우저를 사용하면 쉽게 데이터베이스에 연결하고 데이터베이스 다이어그램이나 스키마를 생성하거나 볼 수 있습니다. 쿼리 빌더 대화 상자와 쿼리 결과 테이블을 사용하여 데이터베이스를 쿼리하고 데이터를 채울 수도 있습니다. 새 데이터베이스 생성(로컬 파일 사용)도 프로젝트 데이터 항목으로 제공됩니다.
Visual Web Developer에서 데이터베이스에 연결한 후에는 데이터베이스 테이블을 페이지에 직접 끌어서 놓아 데이터 바인딩된 GridView 컨트롤을 만들 수 있습니다. Visual Web Developer는 연결된 데이터 소스 컨트롤을 자동으로 만들고 데이터 테이블을 기반으로 선택, 업데이트, 삽입 및 삭제 작업을 구성합니다. 이 빠른 작업을 통해 데이터 원본을 수동으로 만드는 데 필요한 많은 작업을 절약할 수 있으며 필요에 따라 GridView를 적절한 데이터 바인딩 컨트롤로 쉽게 바꿀 수 있습니다.
로컬 및 서버 데이터베이스
여러분은 이미 서버 기반 데이터베이스와 연결 문자열에 익숙할 것입니다. 이 경우 데이터베이스 서버(예: SQL Server 2005)는 데이터베이스 이름을 서버에서 유지 관리하는 데이터베이스 파일과 연결합니다. 서버 이름, 데이터베이스 이름 및 자격 증명을 지정하여 서버 기반 데이터베이스에 연결할 수 있습니다(예:
"server=(local)SQLExpress;database=Pubs;Integrated Security=true").
그러나 Visual Studio 2005는 다음도 지원합니다. 현재 웹 애플리케이션의 App_Data 디렉터리에 추가되는 파일인 로컬 데이터베이스의 개념입니다. App_Data 디렉터리의 내용은 사용자 요청에 응답하지 않으므로 App_Data 디렉터리에 데이터 파일을 저장하는 것이 안전합니다. 이 디렉터리는 XML 파일 및 기타 데이터 저장소를 저장하는 데 권장되는 위치이기도 합니다. 기본 SQL Server Express 데이터베이스에는 SQL Server에서 지원하는 표준 파일 형식인 .MDF 확장자(예: "MyDatabase.MDF")가 있습니다. 서버에 연결되면 데이터베이스에는 관련 로그 파일(예: "MyDatabase_log.LDF")도 있습니다. 데이터베이스 파일과 로그 파일의 위치는 함께 있어야 합니다.
상대 경로 연결 문자열을 사용하여 로컬 파일 데이터베이스를 SQL Server Express에 자동으로 연결할 수 있습니다. 상대 경로는 애플리케이션이 다른 위치로 이동할 때 데이터베이스 연결이 중단되지 않도록 보장합니다. 웹 응용 프로그램의 상대 경로 연결 문자열은 다음과 같습니다.
"server=(local)SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated Security=true;User Instance=true"
위의 연결 문자열에는 두 가지 추가 특성이 더 있습니다. . AttachDbFileName 속성은 연결이 열릴 때 서버에 동적으로 연결되는 데이터베이스 파일의 위치를 지정합니다. 이 속성은 데이터베이스에 대한 전체 경로를 허용할 수 있지만(예: |DataDirectory| 구문 사용) 런타임 시 이 경로는 애플리케이션의 App_Data 디렉터리로 대체됩니다. 이는 또한 애플리케이션이 다른 위치로 이동할 때 연결이 중단되지 않도록 보장합니다. 두 번째 속성은 SQL Server Express가 데이터베이스를 연결하는 방법을 지정하는 User Instance=true입니다. 이 경우 SQL Server Express는 데이터베이스를 새 인스턴스에 연결하기 위해 연결을 연 사용자로 실행되는 새 프로세스를 만듭니다. ASP.NET 응용 프로그램에서 이 사용자는 운영 체제에 따라 로컬 ASPNET 계정이거나 기본 네트워크 서비스입니다. 관리자가 아닌 계정(예: ASP.NET 계정)에서 제공하는 데이터베이스 파일을 안전하게 연결하려면 별도의 SQL Server 사용자 인스턴스를 만들어야 합니다.
참고: 기본적으로 모든 ASP.NET 응용 프로그램은 동일한 프로세스에서 실행되므로 모든 응용 프로그램은 로컬 데이터베이스를 동일한 SQL Server Express 인스턴스에 연결합니다. 이는 애플리케이션이 원래 연결된 데이터베이스에 관계없이 모든 애플리케이션이 이 인스턴스에 연결된 모든 데이터베이스에 대해 동일한 액세스 권한을 가짐을 의미합니다. 서로 다른 응용 프로그램을 격리하려면 각 응용 프로그램이 서로 다른 작업자 프로세스 또는 응용 프로그램 풀(IIS 6)에서 실행되어야 합니다. 이러한 이유로 로컬 SQL Server 데이터베이스는 주로 개발을 용이하게 하기 위한 것이며 공유 호스팅 환경에서 서버 기반 데이터베이스를 대체하기 위한 것이 아닙니다.
또 다른 중요한 점은 두 명의 사용자가 동시에 로컬 데이터베이스에 연결할 수 없다는 것입니다. Visual Studio에서 애플리케이션을 디자인할 때 디자이너는 Visual Studio와 ASP.NET이 데이터베이스 파일을 공유할 수 있도록 연결을 자동으로 해제합니다(예: 디자이너에서 실행 중인 애플리케이션을 디버깅하는 경우).
로컬 데이터베이스 만들기
Visual Studio 웹 응용 프로그램 프로젝트에서 로컬 데이터베이스를 쉽게 만들 수 있습니다. Visual Studio에는 SQL Server Express가 설치되어 있으므로 다음 단계를 사용하여 로컬 데이터베이스를 만들고, 테이블을 추가하고, 데이터를 채울 수 있습니다.
로컬 데이터베이스를 생성하려면:
1. 솔루션 브라우저를 마우스 오른쪽 버튼으로 클릭하고 "새 항목 추가..." 옵션을 선택합니다.
2. "SQL Database" 항목을 선택하고 "Database.mdf"와 같은 파일 이름을 지정합니다.
3. Visual Studio에서는 이 파일을 App_Data 디렉터리에 추가하라는 메시지를 표시합니다. "예"를 클릭하세요.
4. Visual Studio는 이 파일을 추가하고 데이터베이스 브라우저를 사용하여 데이터베이스에 자동으로 연결합니다.
로컬 데이터베이스에 데이터 테이블을 추가하려면:
1. 데이터베이스 브라우저에서 테이블 노드를 마우스 오른쪽 버튼으로 클릭하고 "새 테이블 추가" 옵션을 선택합니다.
2. 데이터베이스에 있는 열의 이름과 유형을 입력하고 선택적으로 속성 테이블에서 다른 열 속성을 설정합니다. 샘플 연락처 데이터베이스를 설정하려면 아래 단계를 따르세요.
3. 첫 번째 열의 이름을 "ContactID"로 설정하고 데이터 유형을 "int"로 설정합니다. "Null 허용" 확인란을 선택 취소합니다.
4. ContactID 열 왼쪽에 있는 회색 사각형을 마우스 오른쪽 버튼으로 클릭하고 "기본 키로 설정" 옵션을 선택합니다.
5. 아래 "열 속성" 테이블에서 "식별자 사양" 노드를 확장하고 "식별자입니까?"를 "예"로 설정합니다.
6. 두 번째 열의 이름을 "ContactName"으로 설정하고 데이터 유형을 "varchar(50)"로 설정합니다. "Null 허용" 확인란을 선택된 상태로 둡니다.
7. Ctrl-S를 눌러 테이블을 저장하고 테이블 이름을 "연락처"로 설정합니다. 확인을 클릭하여 테이블을 저장합니다.
8. 테이블 정의 창을 닫습니다.
데이터로 테이블을 채우려면:
1. 데이터베이스 브라우저에서 데이터 테이블 노드(예: "연락처")를 마우스 오른쪽 버튼으로 클릭하고 "테이블 데이터 표시" 옵션을 선택합니다.
2. 표시된 양식에 데이터 테이블 행에 대한 데이터를 입력합니다. 위의 연락처 예제를 사용하는 경우 ContactName 열에 값을 입력하면 데이터베이스가 해당 ContactID 값을 자동으로 생성합니다.
3. 테이블 창을 닫습니다.
로컬 데이터베이스에 바인딩
로컬 데이터베이스에 바인딩하려면 상대 경로 연결을 사용하여 파일에 연결하도록 ASP.NET 데이터 소스 컨트롤을 구성해야 합니다. SQL Server Express 데이터베이스를 SqlDataSource 및 GridView 컨트롤에 간단히 바인딩하려면 다음 단계를 수행하십시오.
1. 솔루션 브라우저에서 페이지(예: "Default.aspx")를 두 번 클릭합니다. Visual Studio에서 이 페이지가 열립니다.
2. 페이지 창 하단의 '디자인 보기' 탭을 선택하여 디자인 보기로 전환합니다.
3. 솔루션 브라우저에서 데이터베이스 파일(예: "Database.mdf")을 두 번 클릭합니다. Visual Studio는 연결을 위해 데이터베이스 브라우저를 엽니다.
4. 테이블 노드를 확장하여 데이터베이스의 테이블을 표시합니다.
5. 데이터베이스 브라우저의 테이블을 디자인 보기의 열려 있는 페이지로 끌어다 놓습니다. Visual Studio는 SqlDataSource 컨트롤에 바인딩된 GridView를 만듭니다.
6. GridView 컨트롤의 "지능형 트랜잭션 패널"을 확장하고 페이징, 정렬 및 편집을 선택합니다.
7. Ctrl-F5를 눌러 페이지를 실행합니다(디버깅 없이).
다음 예제에서는 로컬 데이터베이스에 연결된 GridView 및 SqlDataSource 컨트롤을 보여줍니다. 이 예제를 실행하려면 ASP.NET 프로세스 계정에 ~/App_Data 디렉터리의 MDF 및 LDF 파일에 대한 읽기/쓰기 권한이 있어야 합니다. 권한 설정 과정은 다음과 같습니다.
1. Windows 브라우저에서 ~/App_Data/Database.MDF 파일을 선택하고 "속성"을 선택합니다.
2. "보안" 탭을 선택하고 "추가"를 클릭하세요.
3. "위치..."를 클릭하고 컴퓨터 이름(목록 상단)을 선택한 다음 "확인"을 클릭합니다.
4. 개체 이름 텍스트 영역에 ASP.NET 프로세스 계정의 이름을 입력합니다. 기본적으로 IIS 6.0의 이름은 "Network Service"이고 IIS 5.x의 이름은 "ASPNET"입니다.
5. "허용" 열에서 "읽기" 및 "쓰기"를 선택하고 "확인"을 클릭합니다.
6. App_Data 디렉터리에 LDF 파일이 있는 경우 위 단계를 반복하여 LDF 파일의 속성을 설정해야 합니다.
Visual Studio를 사용하여 로컬 컴퓨터에 애플리케이션을 빌드하는 경우 기본적으로 App_Data 디렉터리에 대해 위의 권한이 있습니다. 데이터베이스 파일이 연결된 후 권한을 변경해야 하는 경우 새 권한이 적용되기 전에 먼저 애플리케이션 도메인을 닫아야 합니다.
<asp:GridView AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="ContactID" DataSourceID="SqlDataSource1" ID="GridView1" runat="server">
〈칼럼〉
<asp:BoundField DataField="ContactID" HeaderText="ID" ReadOnly="True" SortExpression="ID" />
<asp:BoundField DataField="ContactName" HeaderText="이름" SortExpression="이름" />
</칼럼>
</asp:그리드뷰>
<asp:SqlDataSource ConnectionString="<%$ ConnectionStrings:ContactsDatabase %>" ID="SqlDataSource1" runat="server" SelectCommand="SELECT [연락처 ID], [연락처 이름] FROM [연락처]" OnSelected="SqlDataSource1_Selected"></ asp:SqlDataSource>
로컬 데이터베이스 배포 로컬
데이터베이스 파일의 장점 중 하나는 응용 프로그램과 함께 사용할 수 있고 응용 프로그램의 일부로 다른 위치나 다른 컴퓨터로 이동할 수 있다는 것입니다(물론 컴퓨터에서도 SQL Server를 실행해야 함). 표현하다). 데이터베이스를 이동할 때 파일은 잠금 해제 상태여야 합니다. 디자이너 또는 애플리케이션이 데이터베이스에 연결되어 있는 동안 파일은 잠깁니다. 잠금을 해제하려면 데이터베이스에 대한 모든 활성 연결을 닫아야 합니다. 다음 기술을 사용하여 데이터베이스 연결을 닫을 수 있습니다.
· ASP.NET이 연결을 연 경우 웹 응용 프로그램 루트 디렉터리에 "app_offline.htm" 파일을 추가하여 응용 프로그램 도메인을 닫을 수 있습니다. 그 기능은 애플리케이션 도메인(프로세스가 아님)을 닫고 모든 애플리케이션 요청을 이 파일로 리디렉션하는 것입니다(404 응답 코드 반환). 애플리케이션을 다시 시작하려면 이 파일을 삭제하면 됩니다. 기본적으로 ADO.NET 연결 풀은 활성 연결을 유지하므로 페이지 코드에서 연결을 닫는 것만으로는 파일 잠금이 해제되지 않습니다.
Visual Studio는 xcopy, FTP 또는 FrontPage 서버 확장을 사용하여 작업 디렉터리에서 대상 서버로 애플리케이션 파일을 복사할 수 있는 웹 복사 기능을 제공합니다. 대상 컴퓨터는 로컬이거나 원격일 수 있습니다. Visual Studio 메뉴 모음에서 "웹 사이트 > 웹 사이트 복사..."를 선택하여 웹 복사 기능을 호출할 수 있습니다.
웹 복사나 간단한 xcopy 또는 FTP 작업을 사용하여 데이터베이스를 이동할 수 있지만 응용 프로그램이 계속 작동하려면 대상 컴퓨터에서 동일한 인스턴스 이름으로 SQL Server Express를 실행해야 합니다. 앞에서 ASP.NET을 실행하는 모든 응용 프로그램은 동일한 SQL 인스턴스에 연결되므로 대상 컴퓨터의 모든 응용 프로그램은 서로 신뢰해야 한다고 언급했습니다. 한 애플리케이션이 다른 애플리케이션의 데이터베이스를 볼 수 없는 경우 로컬 데이터베이스 대신 서버 기반 접근 방식(SQL 인증 또는 기타 분리 기술 사용)을 사용하는 것이 좋습니다. SQL Server Express를 개발 도구로 사용하는 경우 프로덕션 배포의 일부로 SQL Server Express 데이터베이스 콘텐츠를 고객에게 복사해야 합니다.