Xcopy 配置 (SQL Server Express)
Microsoft SQL Server 2005 Express Edition (SQL Server Express) では、アプリケーションおよび SQL Server Express データベースの Xcopy 配置がサポートされており、SQL Server Express データベースを使用するアプリケーションの配布が大幅に簡略化されます。
Xcopy 配置とは
Xcopy 配置とは、アプリケーションとデータベース (.mdf) ファイルを、追加構成を行うことなく、別のコンピュータや同じコンピュータの別の場所にコピーする機能です。Xcopy 配置を使用するには、SQL Server Express がコピー先のコンピュータに既にインストールされて、インスタンスが実行されている必要があります。インスタンスの詳細については、「名前付きインスタンスの使用」を参照してください。
Xcopy を使用して、アプリケーションをユーザーに配布するときには、.exe ファイルと .mdf ファイルのみを送信できます。各ユーザーは、これらのファイルを 1 つのフォルダに配置し、.exe ファイルをダブルクリックして、アプリケーションを使い始めることができます。
Xcopy 配置の動作
SQL Server Express では、アプリケーションで初めて接続が確立されたときに、実行中の SQL Server Express のインスタンスに .mdf ファイルが自動的にアタッチされます。ユーザーがアプリケーションを閉じたり終了したりすると、SQL Server Express によって .mdf ファイルがインスタンスからデタッチされます。この機能により、.mdf ファイルは完全に移植可能になります。このファイルはコピーおよび移動することができ、このファイルの複数のコピーを同じインスタンスで同時に実行することも可能です。
論理データベースの名前付け
アプリケーションの接続文字列で論理名が指定されている場合を除き、SQL Server Express によってデータベースがアタッチされるときに、そのデータベースに対する論理名が自動的に生成されます。この論理名は一意である必要があります。SQL Server Express では、ドライブ文字、ディレクトリ名、およびデータベース ファイル名が論理名として使用されます。たとえば、.mdf ファイルが C:\Program Files\My Application\Data\MainData.mdf というパスに配置されている場合、SQL Server Express によって、パス C:\Program Files\My Application\Data\MainData.mdf に完全に一致する論理データベース名が割り当てられます。
メモ : |
---|
完全パスとファイル名の長さが 127 文字を超える場合は、論理データベース名が短縮され、先頭に GUID が付いて、確実に一意の論理名になるように設定されます。 |
ログ ファイルの作成と名前付け
アプリケーションを配置するときには、アプリケーション ファイルと .mdf ファイルのみの Xcopy を行う必要があります。ログ ファイル (.ldf) は含めないでください。SQL Server Express では、データベースをアタッチするときに、自動的に新しいログ ファイルが作成されます。SQL Server Express では、ログ ファイルに database_name_log.ldf という名前が付けられます。.mdf ファイルと同じディレクトリ内に同じ名前のファイルが存在する場合は、既存のファイルが使用されます。
Xcopy 配置を使用する際の制限事項
各自のアプリケーションで Xcopy 配置を使用すると、SQL Server Express 機能の一部が予期したとおりに機能しないことがあります。発生する可能性がある制限事項について説明します。
- 論理データベース名を含む Transact-SQL コードは機能しません。
データベースの論理名はファイルの場所に依存しますが、ファイルの場所は Xcopy ごとに変わるため、論理データベース名を指定しているコードは失敗します。 - レプリケーション シナリオは機能しません。
レプリケーションでは、永続的な論理データベース名が必要です。各自のアプリケーションでレプリケーションが使用される場合は、Xcopy 配置を使用しないでください。
SQL Server Express インスタンスの管理者のための Xcopy 配置
アプリケーションで SQL Server Express の Xcopy 配置機能を使用するには、アプリケーション内で使用する接続文字列に適切なパラメータを含めておく必要があります。
- data source パラメータを使用し、コンピュータ名をピリオド (.) または (local) に変更します。SQL Server Express のインストール先が常に名前のないインスタンスであるという確信がない場合は、インスタンスの名前も指定する必要があります。名前付きインスタンスと名前のないインスタンスの詳細については、「名前付きインスタンスの使用」を参照してください。
- initial catalog パラメータまたは database パラメータを使用しますが、パラメータに値を設定しないでください。
- AttachDBFileName パラメータを追加し、このパラメータに .mdf ファイルの名前とパスを設定します。Attachdbfilename は、実行時にデータベースのアタッチを許可し、データベース名を自動生成する SqlClient 接続文字列オプションです。DataDirectory キーワードによって、データベース ファイルへの相対パスを指定できます。Attachdbfilename の使用は、データベースの移植性にも役立ちます。Attachdbfilename の詳細については、Visual Studio 2005 のドキュメントを参照してください。
次の接続文字列を使用すると、アプリケーション実行可能ファイルと同じフォルダにある MyDb.mdf データベース ファイルが、ローカル コンピュータで実行されている SQL Server Express インスタンスにアタッチされます。
@"Data Source='.\SQLExpress'; Initial Catalog=; Integrated
Security=true; AttachDBFileName='" |DataDirectory| +
@"\MyDb.mdf'"
SQL Server Express インスタンスの管理者以外のユーザーのための Xcopy 配置
インスタンスの管理者のための Xcopy 配置の接続文字列で指定されたすべてのパラメータに加えて、SQL Server Express のインスタンスに対する管理者特権を持たないユーザーのためのアプリケーションを配置する user instance パラメータを指定する必要があります。ユーザー インスタンスの詳細については、「管理者以外のユーザーのためのユーザー インスタンス」を参照してください。