プライベート配置と中心配置 (SQL Server Compact)

SQL Server Compact 4.0 を使用して構築されたマネージ アプリケーションを配置するには、SQL Server Compact の中心配置またはプライベート配置を使用します。中心配置の場合、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 が中心に配置されていない場合)、アプリケーションはプライベートに配置されたアセンブリを使用します。プライベート配置を使用する利点の 1 つは、SQL Server Compact アセンブリが GAC にインストールされず、ネイティブ コンポーネントが COM に登録されず、ユーザーがコンピューターの管理者権限を持っている必要がないため、ロックされたシステムで中心配置するときに発生する潜在的な問題を回避できるという点です。ただし、プライベートに配置された SQL Server Compact アセンブリに対する更新プログラムは中央で処理できないため、プライベート配置では開発者の負担が大きくなります。アプリケーションと共に配置された SQL Server Compact アセンブリの更新プログラムが必要な場合、開発者は必要な更新プログラムを含む SQL Server Compact 4.0 のバージョンでアプリケーションをリビルドして再パブリッシュする必要があります。

インストール

SQL Server Compact 4.0 を 32 ビットおよび 64 ビット オペレーティング システムにインストールするときの動作は、以下のようになります。

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) 用に、以下の 1 つのアセンブリと 1 つのマニフェストがあります。

  • msvcr90.dll

  • Microsoft.VC90.CRT.manifest

更新プログラムとプライベート配置

プライベート配置には、既定で CLR によって GAC からアセンブリが読み込まれるという問題があります。このため、古いバージョンの SQL Server Compact が GAC に存在する場合、CLR は引き続き GAC から SQL Server Compact アセンブリを読み込むため、プライベートに配置された SQL Server Compact アセンブリに更新プログラムをプッシュすることが困難です。プライベートに配置されたアセンブリが CLR によって読み込まれるのは、アセンブリ バージョンが GAC のアセンブリと異なり、アプリケーションが GAC に配置されたアセンブリを使用してコンパイルされる場合のみです。

SQL Server Compact 4.0 では、この問題は次のように対処されています。

  • 修正プログラム、サービス パック、重大な修正プログラム、セキュリティ更新プログラムなどの、すべてのソフトウェア更新プログラムでアセンブリ バージョン番号を増分する。アセンブリ バージョンは、4.0.0.1、4.0.0.2、4.0.0.3 などのように増分されます。

  • フォルダー %Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private 内にマネージ アセンブリ (System.Data.SqlServerCe.dll and System.Data.SqlServerCe.Entity.dll) の追加のコピーをインストールする。

更新プログラムは次の方法で適用されます。

  • 通常の修正プログラムでは、更新プログラムは 2 つのマネージ アセンブリのいずれかまたは両方のすべてのコピーに適用されます。ただし、アセンブリ バージョンは Private フォルダー内のアセンブリのコピーのバージョンのみが更新されます。これにより、開発コンピューター上の Private フォルダー内のアセンブリは、重大でない更新プログラムの場合、GAC にインストールされたバージョンより大きいバージョン番号になります。また、更新プログラムが適用されたコンピューター上のプライベート配置を使用するアプリケーションの場合、CLR は、引き続きアプリケーションのパスから SQL Server Compact 4.0 アセンブリを読み込みます (GAC のアセンブリのバージョン番号は変更されないため)。

  • セキュリティ更新プログラム、サービス パック、重大な更新プログラムの場合、更新プログラムは 2 つのマネージ アセンブリのすべてのコピーに適用され、すべてのアセンブリのバージョンも更新されます。また、すべての古いバージョンのアセンブリが新しいバージョンに自動的にリダイレクトされるように、パブリッシャー ポリシーが更新されます。これにより、更新プログラムが適用されたコンピューターでは、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 フォルダーを参照して、プロジェクトに 2 つの SQL Server Compact マネージ アセンブリへの参照を追加します (中心配置を使用するアプリケーションの場合、これらの参照は [.NET] タブから追加します)。

  3. 必要なネイティブ ライブラリをプロジェクトに追加します。これらのネイティブ ライブラリは、%Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\x86 フォルダー、%Program Files%\Microsoft SQL Server Compact Edition\v4.0\Private\amd64 フォルダー、またはその両方を参照して追加する必要があります。追加するネイティブ ライブラリを含むフォルダーは、アプリケーションを開発するプラットフォーム (x86x64、または任意の 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)