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

SQL Server Compact의 중앙 배포 또는 사설 배포를 사용하여 SQL Server Compact 4.0을 사용하여 빌드된 관리되는 응용 프로그램을 배포할 수 있습니다. 중앙 배포에서는 SQL Server Compact가 설치 실행 파일을 사용하여 컴퓨터에 설치되고, 사설 배포에서는 응용 프로그램 폴더 자체에 SQL Server Compact 이진 파일이 배치됩니다. 이러한 방식으로 SQL Server Compact를 사설 배포하는 것을 SQL Server Compact의 XCOPY 배포라고도 합니다.

중앙 배포를 사용하는 경우 응용 프로그램은 GAC(전역 어셈블리 캐시)에 설치된 SQL Server Compact 관리되는 어셈블리(System.Data.SqlServerCe.dll 및 System.Data.SqlserverCe.Entity.dll)와 중앙 위치(예: %Program Files%\Microsoft SQL Server Compact Edition\v4.0)의 SQL Server Compact 네이티브 구성 요소를 사용합니다. SQL Server Compact 4.0의 새 버전/업데이트가 설치된 경우 SQL Server Compact의 중앙 배포를 사용하는 응용 프로그램에서는 다음에 실행할 때 SQL Server Compact 4.0의 업데이트된 버전이 사용됩니다. 중앙 배포의 단점이라고 한다면 컴퓨터에서 관리자 권한을 가진 사용자만 SQL Server Compact 4.0을 설치할 수 있다는 점입니다. 이는 GAC에 어셈블리를 설치하고 네이티브 구성 요소를 등록하는 데 관리자 권한이 필요하기 때문입니다. 응용 프로그램이 ClickOnce 기술을 사용하여 배포되고 SQL Server Compact 4.0이 설치 중에 필수 구성 요소로 중앙에서 배포되는 경우 SQL Server Compact 4.0을 설치하는 데 필요한 권한이 사용자에게 없기 때문에 설치에 실패할 수 있습니다.

사설 배포를 사용하면 응용 프로그램에서 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 어셈블리에 대한 업데이트가 필요한 경우, 개발자는 필요한 업데이트가 포함된 버전의 SQL Server Compact 4.0을 사용하여 응용 프로그램을 다시 빌드한 다음 다시 게시해야 합니다.

설치

32비트 및 64비트 운영 체제에서 SQL Server Compact 4.0을 설치하는 경우의 결과는 다음과 같습니다.

SQL Server Compact 4.0

운영 체제

32비트

32비트

성공

64비트

오류

설치되는 관리되는 어셈블리와 네이티브 어셈블리는 다음과 같습니다.

관리되는 어셈블리: %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private에 설치됩니다.

  • System.Data.SqlServerCe.dll

  • System.Data.SqlServerCe.Entity.dll

네이티브 어셈블리: %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\x86 및 %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64에 설치됩니다. 단, sqlceoledb40.dll은 %Program Files&\Microsoft SQL Server Compact Edition\v4.0에 설치됩니다.

  • sqlceca40.dll

  • sqlcecompact40.dll

  • sqlceer40EN.dll

  • sqlceme40.dll

  • sqlceoledb40.dll

  • sqlceqp40.dll

  • sqlcese40.dll

위의 어셈블리 외에도 Microsoft Visual C++ 2008 런타임 라이브러리(CRT)의 어셈블리와 매니페스트가 하나씩 있습니다.

  • msvcr90.dll

  • Microsoft.VC90.CRT.manifest

업데이트 및 사설 배포

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

SQL Server Compact 4.0에서는 이 문제가 다음 방법을 통해 해결되었습니다.

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

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

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

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

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

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

SQL Server Compact 4.0의 사설 배포를 사용하는 데스크톱 응용 프로그램을 개발하려면 다음을 수행합니다.

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

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

  3. 필요한 네이티브 라이브러리를 프로젝트에 추가합니다. 이러한 라이브러리는 %Program Files%\Microsoft SQL Server Compact Edition\v 4.0\Private\x86 폴더 또는 %Program Files%\Microsoft SQL Server Compact Edition\v 4.0\Private\amd64 폴더를 찾거나 두 폴더를 모두 찾아 추가해야 합니다. 네이티브 라이브러리를 추가하는 폴더는 응용 프로그램을 개발하는 플랫폼(x86, x64 또는 모든 CPU)에 따라 달라집니다.

    최소한 다음 네이티브 어셈블리를 추가해야 합니다.

    • sqlceer40EN.dll

    • sqlceme40.dll

    • sqlceqp40.dll

    • sqlcese40.dll

    모든 네이티브 구성 요소는 개인 폴더 자체에 배치됩니다. 관리 및 사용 편의를 위해 x86 및 amd64 플랫폼에 대한 네이티브 구성 요소의 폴더 구조는 설치 프로그램에서 동일합니다.

    참고

    64비트 SQL Server Compact 4.0 설치 프로그램은 모든 항목을 포함하는 설치 프로그램으로, 32비트 구성 요소, 64비트 구성 요소 및 아키텍처 중립 구성 요소를 컴퓨터에 설치합니다. 32비트 및 64비트 설치 프로그램에는 사설 배포를 위한 해당 아키텍처의 네이티브 이진 파일이 포함되어 있습니다. 따라서 32비트 개발 환경을 사용할 때 64비트 컴퓨터용 SQL Server Compact 4.0 응용 프로그램을 빌드하려면 64비트 네이티브 어셈블리를 추출할 필요가 없으며, %Program files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64 폴더에서 64비트 네이티브 바이너리를 선택하기만 하면 됩니다.

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

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

참고 항목

참조

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

개념

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