方法 : 新規または既存のデータベースに変更を配置する

更新 : 2010 年 6 月

データベース プロジェクトに変更を加えたら、変更をデータベース サーバーに配置する必要があります。 データベース プロジェクトを配置するときに、そのデータベース プロジェクトで定義したスキーマがターゲット スキーマと比較され、スキーマを同期するのに必要なアクションが特定されます。 それらのアクションが配置前スクリプトおよび配置後スクリプトと組み合わされて、完全な配置スクリプトが生成されます。 ターゲット データベースが存在しない場合、またはデータベースを常に再作成することを指定した場合は、.dbschema ファイルで定義されたスキーマがデータベースの作成のために使用されます。 新しいデータベースを作成するとき、同じ名前のデータベースが既にある場合は、配置スクリプトはその削除を試みます。 データベース プロジェクト、そのプロパティまたは内容が、最後にビルドまたは配置した時点から変更されている場合は、そのプロジェクトのビルド時に最新の .dbschema ファイルを生成します。

稼動環境では、通常、ターゲット データベースに直接配置する代わりに 配置スクリプト (.SQL ファイル) を生成します。生成された配置スクリプトを見直して、必要に応じて更新してから、Transact-SQL エディターを使用して配置します。 SQL Server Management Studio などのツールを使用することもできます。

VSDBCMD.EXE ツールを使用してデータベースを配置することもできます。 その際には、データベースの配置に使用する .dbschema ファイルを指定できます。 VSDBCMD を使用すると、Visual Studio がインストールされていないコンピューターから配置を実行できます。 詳細については、「方法: VSDBCMD.EXE を使用してコマンド プロンプトからデータベースの配置を準備する」を参照してください。

重要

データベース プロジェクトを配置する前に、プロジェクトのプロパティを設定してターゲット データベースの接続とデータベース名を指定する必要があります。 新規データベース プロジェクト ウィザードを使ってデータベース プロジェクトを生成した場合は、プロジェクトのプロパティが既に指定されている可能性があります。 プロジェクトのプロパティはいつでも変更できます。 詳細については、「方法: データベース プロジェクトのデータベース プロパティを構成する」を参照してください。

必要なアクセス許可

データベース プロジェクトを配置するには、データベースを作成するために必要な権限 (新しい配置の場合)、およびそのデータベースのスキーマ オブジェクトを作成、変更、および削除するために必要な権限を持っている必要があります。

単一のデータベースへの配置

Visual Studio を使用して、コマンド プロンプトから、または Transact-SQL エディターで配置スクリプトを実行することで、データベースを配置できます。 Visual Studio に用意された Transact-SQL エディターを使用するか、SQL Server Management Studio などのツールを使用できます。

新規または既存のデータベースにデータベース プロジェクトを配置するには

  1. ソリューション エクスプローラーで、配置するデータベース プロジェクトをクリックします。

    カスタム構成を作成した場合、[標準] ツール バーの [ソリューション構成] ボックスの一覧でカスタム構成の名前をクリックすると、その構成を使用することを指定できます。 既定では、データベース プロジェクトの構成が 1 つ定義されていて、既に選択済みの状態になっています。

  2. [ビルド] メニューの [配置] をクリックします。

    データベース プロジェクトのビルド出力が配置されます。ビルド出力が存在しない場合、または最新の状態でない場合は、生成されてから配置されます。 [出力] ウィンドウに、次のように配置の結果が表示されます。

    ProjectName -> D:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.dbschema

    ------ 配置開始: プロジェクト: ProjectName、構成: Debug Any CPU ------

    配置スクリプト ProjectName.sql が生成されました

    プロジェクト ProjectName を作成しています

    dbo.ObjectName を作成しています

    .

    .

    .

    .

    ========== ビルド: 1 正常終了または最新の状態、0 失敗、0 スキップ ==========

    ========== 配置: 1 正常終了、0 失敗、0 スキップ ==========

コマンド ラインから新規または既存のデータベースにデータベース プロジェクトを配置するには

  1. [コマンド プロンプト] ウィンドウを開き、プロジェクト ディレクトリを参照します。

  2. コマンド プロンプトで、次の例のコマンド ラインを入力してデータベース プロジェクトを配置します (DatabaseProject はプロジェクトの名前)。

    MSBuild /t:Build;Deploy DatabaseProject.dbproj

    注意

    MSBuild.exe は、PATH 環境変数で指定されるパスに存在している必要があります。 また、TargetDatabase および TargetConnectionString をデータベース プロジェクトで指定するか、またはコマンド ラインの一部として指定する必要があります。 ビルド スクリプトを生成するためのコマンド ライン構文の詳細については、「データベースのビルドおよび配置の概要」を参照してください。

    次のような結果が表示されます。

    Microsoft (R) Build Engine Version 3.5.21022.8

    [Microsoft .NET Framework, Version 2.0.50727.1433]

    Copyright (C) Microsoft Corporation 2007. All rights reserved.

    Build started 5/20/2008 1:36:58 PM.

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" on node 0 (Deploy target(s)).

    Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (1) is building "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (2) on node 0 (DspDeploy target(s)).

    Deployment script ProjectName.sql generated

    :

    (1 row(s) affected)

    Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\sql\ProjectName.deploymanifest" (DspDeploy

    target(s)).

    Done Building Project "ProjectDrive:\Documents and Settings\UserName\My Documents\Visual Studio 2008\Projects\SolutionName\ProjectName\ProjectName.dbproj" (Deploy target(s)).

    Build succeeded.

    0 Warning(s)

    0 Error(s)

    Time Elapsed 00:00:07.32

配置スクリプトを実行することでデータベースを配置するには

  1. 選択した Transact-SQL エディターで、配置スクリプトを開きます。

    注意

    この手順では、Visual Studio に付属する Transact-SQL を使用していることを前提としています。

    コンパイル済みの配置スクリプトは ProjectName.sql という名前で、SolutionName\ProjectName\sql\Configuration フォルダーにあります。 Configuration は、Debug や Release など、ビルド構成の名前です。

  2. メニュー バーで、まだ有効になっていない場合は [データ][Transact-SQL エディター][SQLCMD モード] の順に選択します。

    重要

    SQLCMD モードが有効でない場合、:setvar ステートメントがサポートされないため、配置スクリプトを実行したときにエラーが発生します。

  3. メニュー バーで、[データ][Transact-SQL エディター][SQL の実行] の順に選択して、配置スクリプトを実行します。 要求されたら、配置先のサーバーの接続情報を指定します。

    配置スクリプトが実行され、データベースが作成されます。

複数のデータベースまたは複数のサーバーへの配置

スキーマは、複数のデータベースまたは複数のサーバーに配置できます。 変更されない少数のサーバーまたはデータベースに配置する場合 (たとえば、個人で使用する開発サーバーとステージング サーバーの両方に配置する場合)、複数のビルド構成を作成できます。 各ビルド構成に対して、異なるターゲット サーバーまたはデータベースを指定できます。 多数のサーバーを配置する必要がある場合、またはターゲット サーバーまたはデータベースの名前が定期的に変更される場合は、別の方法を使用してください。 次に、これらの方法について説明します。

複数のビルド構成を作成して複数のサーバーまたはデータベースに配置するには

  1. Visual Studio でデータベース プロジェクトを開きます。

  2. [ビルド] メニューの [構成マネージャー] をクリックします。

    [構成マネージャー] ダイアログ ボックスが表示されます。

  3. [アクティブ ソリューション構成] ボックスの一覧の [<新規作成>] をクリックします。

    [新しいソリューション構成] ダイアログ ボックスが表示されます。

  4. [名前] ボックスに、最初のサーバー構成の名前を入力します。

  5. 既定の構成でプロジェクトのプロパティを既に構成してある場合は、[設定のコピー元] ボックスの一覧の [既定値] をクリックします。

  6. [OK] をクリックします。

  7. [アクティブ ソリューション構成] ボックスの一覧の [<新規作成>] をクリックします。

    [新しいソリューション構成] ダイアログ ボックスが表示されます。

  8. [名前] ボックスに、2 番目のサーバー構成の名前を入力します。

  9. 既定の構成でプロジェクトのプロパティを既に構成してある場合は、[設定のコピー元] ボックスの一覧の [既定値] をクリックします。

    注意

    名前付き構成ごとにデータベース名と接続文字列を構成することもできます。

  10. [閉じる] をクリックします。

  11. ソリューション エクスプローラーでデータベース プロジェクトを右クリックし、[プロパティ] をクリックします。

  12. [ビルド] タブをクリックします。

  13. [構成] ボックスで、最初のサーバー構成の名前をクリックします。

  14. 最初のサーバー構成に一致するように、ターゲット接続およびデータベース名を変更します。

  15. [構成] ボックスで、2 番目のサーバー構成の名前をクリックします。

  16. 2 番目のサーバー構成に一致するように、ターゲット接続およびデータベース名を変更します。

  17. [ファイル] メニューの [選択されたファイルを上書き保存] をクリックして、構成設定を保存します。

    これで、標準ツール バーで構成を指定し、その構成をビルドまたは配置できます。

MSBuild を使用してコマンド ラインからデータベースに配置するには

  • コマンド プロンプト ウィンドウで次のコマンド ラインを入力して、ビルド スクリプトを配置します。サーバー名および対象の構成は適切な値に置き換えてください。

    MSBuild /t:Deploy /p:Configuration=TargetConfiguration DatabaseProjectName.dbproj

    注意

    複数のサーバーに配置するには、[コマンド プロンプト] ウィンドウで「/p:TargetConnectionString="Data Source=ServerName;Integrated Security=True;Pooling=False"」と指定して、ターゲット接続文字列のプロパティをオーバーライドする必要があります。 対象のサーバーごとに 1 つの構成を定義し、配置する構成を指定できます。

VSDBCMD を使用してコマンド プロンプトからデータベース プロジェクトを配置するには

  • 重要

    この手順では、VSDBCMD を実行するコンピューターに必要なファイルが既にコピーされていることを前提としています。 詳細については、「方法: VSDBCMD.EXE を使用してコマンド プロンプトからデータベースの配置を準備する」を参照してください。

    コマンド プロンプト ウィンドウを開き、次のコマンド ラインを入力します。

     VSDBCMD /a:Deploy /dd:+ /manifest:manifestFileName.dbmanifest
    

    配置マニフェストは、対象のデータベース名や接続文字列などの、コマンド ラインでも指定できる他の設定を提供します。

参照

処理手順

方法: コンパイル済みスキーマ (.dbschema) ファイルを生成するためにデータベース プロジェクトをビルドする

チュートリアル: 既存のバージョン管理されたデータベースへの変更の配置

概念

データベースのビルドおよび配置の概要

データベース プロジェクト設定の概要

履歴の変更

日付

履歴

理由

2010 年 6 月

カスタマー フィードバックに基づいて、冒頭の説明を整理し、VSDBCMD による配置の説明を追加しました。

カスタマー フィードバック

2011 年 5 月

Transact-SQL エディターで配置スクリプトを実行する方法を説明する手順を追加しました。

カスタマー フィードバック