"SQL Server Express Edition과 Compact Edition 중에서 선택"을 쓴 후, 정원의 몇몇 친구들이 SQL Server Compact Edition(sqlce)이 ASP.NET을 지원하는지 묻습니다. 당시에는 확신이 없었는데 직접 테스트해보니 확실히 안 되더라고요. 그런데 이상하다고 생각하고 지원하지 않을 이유가 없었어요!
오늘 Steve Lasker의 블로그를 읽고 마침내 알아냈습니다!
sqlce는 기본적으로 ASP.NET을 지원하지 않기 때문에 많은 사용자들이 MS에 요청을 하고 지속적으로 불만을 토로하고 심지어 위협까지 했습니다. (지원하지 않으면 XX 제품을 사용하겠습니다.) Steve Lasker는 마침내 가만히 있지 못하고 이 모든 것을 명확히 하기 위해 나왔습니다.
실제로 sqlce의 시장 포지셔닝은 매우 명확하며 주로 스마트 클라이언트의 오프라인 데이터 저장 및 동기화 문제를 해결합니다. 이는 "SQL Server Express Edition과 Compact Edition 중에서 선택"에서도 명확하게 설명됩니다. 따라서 Microsoft는 웹사이트 데이터베이스로서 sqlce의 사용 시나리오를 최적화하지 않았습니다. 웹 사이트에 대한 다중 사용자 액세스 및 데이터 동시성 환경에서 sqlce의 성능은 이상적이지 않으며 SQL Server Express와 비교할 수 없습니다. 따라서 웹 사이트에서는 여전히 SQL Server Express 또는 SQL Server 데이터베이스를 사용하는 것이 좋습니다. sqlce는 내장형 데이터베이스 엔진이고 SQL Server Express는 데이터베이스 서비스라는 점을 알아야 합니다. 이제 SQL Server 개발 팀이 최근 출시한 호스팅 도구 키트 SQL Server가 웹 서버에 SQL Server Express를 배포하는 데 도움을 줄 수 있습니다.
그렇다면 ASP.NET은 sqlce를 데이터 저장소로 사용할 수 있습니까? 할 수 있다!
기본적으로 ASP.NET 작업자 프로세스에서 sqlce 데이터베이스 연결을 열면 sqlce가 차단됩니다. 다음 코드를 통해 이 제한 사항을 제거할 수 있습니다. sqlce의 이름이 바뀌고 더 이상 SQL Server Everywhere로 불리지 않으므로 RTM 버전에서는 이 코드 줄이 변경됩니다.
AppDomain.CurrentDomain.SetData("SQLServerEverywhereUnderWebHosting", true)는
ASP.NET에서는 sqlce의 데이터 동기화 기능을 사용할 수 없다는 점에 유의해야 합니다.
즉, 신발이 아무리 크더라도 ASP.NET에서는 sqlce를 사용해서는 안 됩니다.
참조:
ASP.net 및 IIS의 SQL Server Compact Edition
SqlCeConnection 클래스(System.Data.SqlServerCe)