Xcopy 配置 (SQL Server Express)

Xcopy は、アプリケーションと SQL Server Express データベースを配置するための簡素な方法です。Xcopy 配置では、新しいアプリケーション (.exe) およびデータベース (.mdf) ファイルを、別のコンピューターや同じコンピューターの別の場所にコピーできます。追加の構成は必要ありません。

アプリケーションをユーザーに配布する場合は、.exe ファイルと .mdf ファイルのみを送信します。各ユーザーは、これらのファイルをローカルに保存し、.exe ファイルをダブルクリックするだけでアプリケーションを起動できます。各自のアプリケーションでレプリケーションが使用される場合は、Xcopy 配置を使用しないでください。

Xcopy 配置を使用するには、SQL Server Express がコピー先のコンピューターにインストールされて、インスタンスが実行されている必要があります。詳細については、「管理者以外のユーザーのためのユーザー インスタンス」を参照してください。

Xcopy 配置の使用方法

実行中の SQL Server Express のインスタンスからアプリケーションが最初に接続を確立するときに、SQL Server Express によって自動的に .mdf ファイルがアタッチされます。ユーザーがアプリケーションを終了すると、SQL Server Express によって .mdf ファイルがインスタンスからデタッチされます。Xcopy 機能により、.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'"

@"Data Source='.\SQLExpress'; Initial Catalog=; Integrated 
Security=true; AttachDBFileName='" |DataDirectory| + 
@"\MyDb.mdf'"

SQL Server Express インスタンスの管理者以外のユーザーのための Xcopy 配置

SQL Server Express インスタンスで管理者権限を持たないユーザー向けにアプリケーションを配置するには、以下を指定する必要があります。

  • Xcopy 配置の接続文字列内のパラメーター

  • user instance パラメーター

詳細については、「管理者以外のユーザーのためのユーザー インスタンス」を参照してください。

関連項目

その他の技術情報