사설 배포와 중앙 배포 비교(SQL Server Compact)

SQL Server Compact 3.5으로 빌드된 관리되는 응용 프로그램은 SQL Server Compact의 중앙 배포 또는 사설 배포를 사용하여 배포할 수 있습니다. 중앙 배포에서는 SQL Server Compact가 Microsoft Windows Installer(MSI) 파일을 사용하여 컴퓨터에 설치되고 장치별 SQL Server Compact Windows 캐비닛(CAB) 파일을 복사 및 설치하여 장치에 설치됩니다. 사설 배포에서는 컴퓨터와 장치 모두의 응용 프로그램 폴더 자체에 SQL Server Compact 구성 요소가 배치됩니다. 이러한 방식으로 SQL Server Compact를 사설 배포하는 것을 SQL Server Compact의 XCOPY 배포라고도 합니다.

중앙 배포를 사용하면 응용 프로그램에서는 GAC(전역 어셈블리 캐시)에 설치된 SQL Server Compact의 관리되는 어셈블리(System.Data.SqlServerCe.dll 및 System.Data.SqlserverCe.Entity.dll)와 COM에 등록된 SQL Server Compact 네이티브 구성요소를 사용합니다. 이는 Microsoft Update를 사용하여 SQL Server Compact 3.5에 대한 업데이트를 중앙에서 서비스할 수 있음을 의미합니다. SQL Server Compact의 중앙 배포를 사용하는 응용 프로그램에서는 다음에 실행될 때 업데이트된 버전의 SQL Server Compact 3.5을 사용합니다. 중앙 배포의 단점이라도 한다면 컴퓨터에서 관리자 권한을 가진 사용자만 SQL Server Compact 3.5을 설치할 수 있다는 점입니다. GAC에 어셈블리를 설치하고 네이티브 구성 요소를 등록할 때 이러한 관리자 권한이 필요하기 때문입니다. ClickOnce 기술을 사용하여 응용 프로그램을 배포하고 설치 중에 필수 구성 요소로 SQL Server Compact 3.5을 중앙 배포하면 사용자가 SQL Server Compact 3.5을 설치하는 데 필요한 권한이 부족하여 설치에 실패할 수 있습니다.

사설 배포를 사용하면 응용 프로그램에서 SQL Server Compact의 관리되는 어셈블리 및 필요한 SQL Server Compact 네이티브 라이브러리에 대한 자체 로컬 복사본을 사용합니다. 이러한 어셈블리 및 네이티브 라이브러리는 응용 프로그램과 함께 번들로 제공되며 응용 프로그램을 배포할 때 대상 시스템의 응용 프로그램 파일 경로에 설치됩니다. 사설 배포된 SQL Server Compact 어셈블리의 버전 번호가 GAC에 중앙 설치된 버전 번호보다 높을 경우 응용 프로그램에서는 중앙 배포된 어셈블리 대신 사설 배포된 어셈블리를 사용합니다. GAC에 SQL Server Compact 어셈블리가 없는 경우, 즉 대상 컴퓨터에 SQL Server Compact가 중앙 배포되지 않은 경우에는 응용 프로그램에서 사설 배포된 어셈블리를 사용합니다. 사설 배포를 사용하는 경우 장점 중 하나는 SQL Server Compact 어셈블리가 GAC에 설치되지 않고 네이티브 구성 요소가 COM에 등록되지 않기 때문에 잠겨 있는 시스템에 중앙 배포할 경우 발생할 수 있는 문제가 발생하지 않는다는 점입니다. 그러나 사설 배포의 경우 사설 배포된 SQL Server Compact 어셈블리에 대한 업데이트를 중앙에서 서비스할 수 없기 때문에 개발자의 책임이 더 커집니다. SQL Server Compact 3.5의 중앙 배포된 인스턴스만 Microsoft Update에 의해 업데이트됩니다. 응용 프로그램과 함께 배포된 SQL Server Compact 어셈블리에 대한 업데이트가 필요한 경우, 개발자는 필요한 업데이트가 포함된 버전의 SQL Server Compact 3.5을 사용하여 응용 프로그램을 다시 빌드한 다음 다시 게시해야 합니다.

참고

SQL Server Compact가 사설 배포된 컴퓨터에도 Microsoft 업데이트를 통해 SQL Server Compact의 중요 보안 업데이트가 제공됩니다. 컴퓨터에 SQL Server Compact가 중앙 설치되어 있지 않은 경우, 즉 SQL Server Compact 어셈블리가 GAC에 설치되어 있지 않고 SQL Server Compact 네이티브 라이브러리가 등록되어 있지 않은 경우에도 이러한 업데이트가 발생합니다.

SQL Server Compact 기반 응용 프로그램의 사설 배포와 중앙 배포는 데스크톱 및 장치 응용 프로그램 모두에 지원됩니다.

업데이트 및 사설 배포

사설 배포와 관련된 문제 중 하나는 기본적으로 CLR이 GAC에서 어셈블리를 로드한다는 점입니다. 따라서 이전 버전의 SQL Server Compact가 GAC에 있으면 CLR이 계속해서 GAC에서 SQL Server Compact 어셈블리를 로드하기 때문에 사설 배포된 SQL Server Compact 어셈블리에 업데이트를 넣기가 어렵습니다. 사설 배포된 어셈블리는 GAC에 있는 어셈블리와 버전이 다르고 응용 프로그램이 GAC에 배포된 어셈블리를 사용하여 컴파일된 경우에만 CLR에 의해 로드됩니다.

SQL Server Compact 3.5 서비스 팩 1(SP1)부터는 이 문제가 다음 방법을 통해 해결되었습니다.

  • 핫픽스, 서비스 팩, 중요 패치 및 보안 업데이트를 포함한 모든 소프트웨어 업데이트의 어셈블리 버전 번호 증가. 어셈블리 버전은 3.5.1.0, 3.5.1.2, 3.5.1.3과 같은 식으로 증가합니다.

  • 관리되는 어셈블리의 추가 복사본(System.Data.SqlServerCe.dll 및 System.Data.SqlServerCe.Entity.dll)을 %Program Files%\Microsoft SQL Server Compact Edition\v3.5\Private 위치에 설치

업데이트는 다음 방식으로 적용됩니다.

  • 일반적인 핫픽스의 경우 업데이트는 두 종류의 관리되는 어셈블리 중 하나 또는 모두에 대한 모든 복사본에 적용되지만 Private 폴더에 있는 어셈블리 복사본의 경우에만 버전이 업데이트됩니다. 따라서 중요하지 않은 업데이트의 경우 개발 컴퓨터의 Private 폴더에 있는 어셈블리의 버전 번호가 GAC에 설치된 어셈블리의 버전 번호보다 높습니다. 또한 컴퓨터에서 업데이트가 적용된 사설 배포를 사용하는 응용 프로그램의 경우 GAC에 있는 어셈블리의 버전 번호가 변경되지 않기 때문에 CLR은 계속해서 응용 프로그램 경로에서 SQL Server Compact 3.5 어셈블리를 로드합니다.

  • 보안 업데이트, 서비스 팩 및 중요 업데이트의 경우에는 업데이트가 두 종류의 관리되는 어셈블리에 대한 모든 복사본에 적용되고 해당하는 모든 어셈블리의 버전이 업데이트됩니다. 또한 낮은 버전의 모든 어셈블리가 새 버전으로 자동 리디렉션되도록 게시자 정책이 업데이트됩니다. 따라서 업데이트가 적용된 컴퓨터의 경우 CLR이 사설 배포를 사용하는 응용 프로그램을 포함한 모든 SQL Server Compact 3.5 응용 프로그램에 대한 GAC에서 관리되는 어셈블리를 로드합니다.

사설 배포를 사용하는 응용 프로그램 개발

참고

데스크톱용 응용 프로그램을 개발할 때는 Visual Studio 2010을, 스마트 장치 응용 프로그램을 개발할 때는 Visual Studio 2008 SP1을 사용하는 것이 좋습니다. Visual Studio 2010에서는 스마트 장치 응용 프로그램 개발을 지원하지 않습니다. 자세한 내용은 개발 환경 설치를 참조하십시오.

SQL Server Compact 3.5의 사설 배포를 사용하는 데스크톱 응용 프로그램을 개발하려면

  1. 업데이트가 개발 컴퓨터의 SQL Server Compact 3.5에 대한 최신 버전인지 확인합니다.

  2. Visual Studio의 참조 추가 대화 상자에서 %Program Files%\Microsoft SQL Server Compact Edition\v3.5\Private 폴더를 찾아 SQL Server Compact의 두 관리되는 어셈블리에 대한 참조를 프로젝트에 추가합니다. 중앙 배포를 사용하는 응용 프로그램의 경우에는 .NET 탭에서 이러한 참조를 추가합니다.

  3. 필요한 네이티브 라이브러리를 프로젝트에 추가합니다. 이러한 라이브러리는 %Program Files%\Microsoft SQL Server Compact Edition\v3.5 폴더 또는 %Program Files(x86)%\Microsoft SQL Server Compact Edition\v3.5 폴더를 찾거나 두 폴더를 모두 찾아 추가해야 합니다. 네이티브 라이브러리를 추가하는 폴더는 응용 프로그램을 개발하는 플랫폼(x86, x64 또는 모든 CPU)에 따라 달라집니다. 최소한 추가해야 하는 네이티브 어셈블리는 sqlceme35.dll, ssceqp35.dll, sscese35.dll 및 sqlceer35xx.dll입니다.

    참고

    64비트 SQL Server Compact 3.5 네이티브 어셈블리는 32비트 컴퓨터에 설치되지 않습니다. 32비트 개발 환경을 사용할 때 64비트 컴퓨터용 SQL Server Compact 3.5 응용 프로그램을 빌드하려면 64비트 SQL Server Compact 3.5 설치 관리자(SSCERuntime_x64-ENU.msi)에서 이러한 어셈블리를 추출해야 합니다. 자세한 내용은 방법: SQL Server Compact Runtime Installer에서 64비트 DLL 추출을 참조하십시오.

  4. 위에서 추가한 관리되는 어셈블리와 네이티브 라이브러리가 빌드 출력에 복사되었는지 확인합니다.

데스크톱 응용 프로그램 빌드에 대한 자세한 내용은 데스크톱용 응용 프로그램 빌드(SQL Server Compact)를 참조하십시오.

SQL Server Compact 3.5의 사설 배포를 사용하는 스마트 장치 응용 프로그램을 개발하려면

  1. 업데이트가 개발 컴퓨터의 SQL Server Compact 3.5에 대한 최신 버전인지 확인합니다.

  2. Visual Studio의 참조 추가 대화 상자에 있는 .NET 탭에서 .NET Compact Framework Data Provider for SQL Server Compact에 대한 참조를 추가합니다. 그러면 %Program Files%\Microsoft SQL Server Compact Edition\v3.5\Devices 폴더에 있는 데이터 공급자가 프로젝트에 추가됩니다. 이 단계는 사용되는 SQL Server Compact의 배포 버전이 사설 배포 버전인지 중앙 배포 버전인지에 관계없이 모든 스마트 장치 응용 프로그램에 대해 동일합니다.

  3. 필요한 네이티브 라이브러리를 프로젝트에 추가합니다. 이러한 라이브러리는 대상 플랫폼의 적절한 폴더: %Program Files%\Microsoft SQL Server Compact Edition\v3.5\Devices\platform\processor 폴더를 찾아 추가해야 합니다. 최소한 추가해야 하는 네이티브 라이브러리는 sqlceme35.dll, ssceqp35.dll, sscese35.dll 및 sqlceer35xx.dll입니다.

  4. 위에서 추가한 관리되는 어셈블리와 네이티브 라이브러리가 빌드 출력에 복사되었는지 확인합니다.

스마트 장치 응용 프로그램 빌드에 대한 자세한 내용은 스마트 장치 응용 프로그램 빌드(SQL Server Compact)를 참조하십시오.

참고 항목

관련 자료

데스크톱용 응용 프로그램 빌드(SQL Server Compact)

스마트 장치 응용 프로그램 빌드(SQL Server Compact)

스마트 장치 응용 프로그램 배포

데스크톱 응용 프로그램 배포