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

SQL Server Compact 3.5 を使用して構築されたマネージ アプリケーションを配置するには、SQL Server Compact の中心配置またはプライベート配置を使用します。 中心配置の場合、SQL Server Compact をインストールするには、コンピューター上では Microsoft Windows インストーラー (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 ネイティブ コンポーネントを使用します。 つまり、SQL Server Compact 3.5 の更新プログラムは Microsoft Update を使用して中心的に処理されます。 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 が中心に配置されていない)、アプリケーションはプライベートに配置されたアセンブリを使用します。プライベート配置を使用する利点の 1 つは、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 の重大なセキュリティ更新プログラムは、SQL Server Compact がプライベートに配置されているコンピューターでも Microsoft Update を介して提供されます。これらの更新は、コンピューターに 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 アセンブリに更新プログラムをプッシュすることが困難です。プライベートに配置されたアセンブリが CLR によって読み込まれるのは、アセンブリ バージョンが GAC のアセンブリと異なり、アプリケーションが GAC に配置されたアセンブリを使用してコンパイルされる場合のみです。

SQL Server Compact 3.5 Service Pack 1 (SP1) 以降で、この問題は次のように対処されています。

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

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

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

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

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

  3. 必要なネイティブ ライブラリをプロジェクトに追加します。これらのネイティブ ライブラリは、%Program Files%\Microsoft SQL Server Compact Edition\v3.5 フォルダー、%Program Files(x86)%\Microsoft SQL Server Compact Edition\v3.5 フォルダー、またはその両方を参照して追加する必要があります。追加するネイティブ ライブラリを含むフォルダーは、アプリケーションを開発するプラットフォーム (x86x64、または任意の 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) からこれらのアセンブリを抽出する必要があります。詳細については、「方法: 64 ビット版の DLL を SQL Server Compact ランタイム インストーラーから抽出する」を参照してください。

  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)

スマート デバイス アプリケーションの配置

デスクトップ アプリケーションの配置