データベースのビルドおよび分離開発環境への配置

分離開発環境 (サンドボックスとも呼ばれます) では、チーム メンバが互いに競合する変更点を導入することなく、データベース コードを更新、ビルド、および配置できます。 テスト データを生成し、データベース単体テストを実行後、自分のバージョンのコードをステージング サーバーまたはテスト サーバーへ配置できます。配置したサーバーで、そのバージョンは他の開発者によるコードとマージされます。 データベース プロジェクトを配置する前に、分離開発環境への配置がステージング サーバーの代用か、運用サーバーの代用かに応じて、プロパティを構成します。

データベース プロジェクトをローカル配置用に構成する

配置プロパティを構成するときに、分離開発環境に固有のターゲット データベース接続、.deploymentconfig ファイル、および .sqlcmdvars ファイルを指定できます。 データベース プロジェクトの配置プロパティで、データベース プロジェクトに格納されている配置設定とは異なる設定を分離開発環境用に構成できます。 したがって、分離開発データベースへのターゲット データベース接続、別の .deploymentconfig ファイル、および別の .sqlcmdvars ファイルを指定できます。

配置構成の詳細

分離開発環境にプロジェクトを配置する前に、以下の問題を解決する必要があります。

  • 多くの場合、開発環境はターゲットのステージング環境または稼働環境に一致する必要があるので、必要に応じて、データベース プロジェクトの照合順序を使用してください。

  • 保持しなければならない本番データはないので、必要に応じて、データベースを常に作成し直してください。

  • ターゲットのステージング環境または稼働環境に一致するように開発環境を設定する必要があるので、必要に応じてデータベース プロパティを配置してください。

  • 配置のたびにデータベースを作成し直す場合は、配置のオーバーヘッドが増大するうえにメリットがないので、データベースのバックアップは行わないでください。

  • 本番データの操作ではなくテスト データの生成を行う場合、データ損失が発生しても配置をブロックしない方がよいことがあります。 ただし、変更点によるデータ損失を想定していない場合は、その点をテストするために配置をブロックする必要があります。

  • データベースにあってデータベース プロジェクトにないオブジェクトに対しては、DROP ステートメントを生成しないでください。 データベース プロジェクトの不完全なオブジェクトを一時的に除外する場合や、保持するオブジェクトのプロトタイプがターゲット データベースに存在する場合があります。

SQL コマンドの変数

分離開発環境への配置時に、その環境に適した値を変数に当てはめることができます。 たとえば、開発環境の Service Broker やサービス証明書に、ステージング環境または稼働環境での値とは異なる値が必要になる場合があります。 分離開発環境に別の .sqlcmdvars ファイルを指定することで、配置ターゲットを変更するときにこれらの変数の値を変更する必要がなくなります。 この方法で、MSBuild 変数についても、構成に固有の値を指定するように .sqlcmdvars ファイルを定義する必要がなくなります。 配置する構成ごとに異なる .sqlcmdvars ファイルを指定できます。

サーバー プロジェクトの配置

データベース プロジェクトを配置するときは、データベースのオブジェクトと設定を配置します。 サーバー プロジェクトを配置するときは、マスタ データベースに定義されているオブジェクトを配置しますが、サーバー設定は変更されません。 サーバー設定は無視できますが、ターゲット サーバーの一部またはすべての設定の値がサーバー プロジェクトで指定した値と一致するかどうかを検証することもできます。

設定の扱い方が異なる点を除き、サーバー プロジェクトは、データベース プロジェクトの配置と同じ手順を使用して配置します。

ロールの配置

データベースを配置するすべてのサーバーに、データベースで使用するロールを配置する必要があります。 ただし、開発環境では、各ロールに関連付ける必要があるユーザーの数を制限できます。 テストでは通常各ロールに少なくとも 1 人のユーザーが必要ですが、分離開発環境にユーザーの完全なセットを配置する必要はありません。

コマンド ライン配置

次の必須コンポーネントがインストールされていれば、Visual Studio Team System Database Edition がインストールされていないコンピュータでも、コマンド プロンプトからデータベース プロジェクトを配置できます。

  • Microsoft .NET Framework Version 3.5 Service Pack 1

  • SQL Server 管理オブジェクト (SMO)

    これらのオブジェクトは、SQL Server がインストールされているすべてのコンピュータにインストールされています。

これらの必須コンポーネントに加えて、以下のファイルも、最初にユニバーサル シリアル バス (USB) ドライブにコピーするなどの方法で、そのコンピュータに転送する必要があります。

  • データベース プロジェクトのビルド出力 (デバッグまたはリテール)

  • Database Edition の Deploy フォルダの内容

    このフォルダは通常 [Program Files]\VSTSDB\Deploy にあります。

  • SQL Server Compact Edition のアセンブリ

必須コンポーネントをインストールしてファイルを転送したら、データベース プロジェクトを (.dbschema ファイルの形式で) ターゲット データベースに配置できます。

一般的なタスク

次の表は、このシナリオをサポートする一般的なタスクの説明と、これらのタスクを正常に完了する方法の詳細へのリンクを示しています。

タスク

関連するトピック

ビルドおよび配置を開始する : データベース プロジェクトを初めて構成、ビルド、および配置する前に、チーム環境でデータベース プロジェクトをどのように使用するかを理解する必要があります。 また、ビルドと配置のプロセスの理解を深め、プロジェクトのビルドと配置の状況を制御するすべてのプロパティと設定について学習することもできます。

実習で学習する : 入門編のチュートリアルを完了することで、分離開発環境の作成からベースラインの設定および反復開発の実行までの全体的なプロセスについて短時間で学習できます。

完了したオブジェクトのみを配置する : 配置またはテストの準備が完了していないデータベース オブジェクトの定義を含むファイルを除外できます。

  • プロジェクトをビルド用に構成する : データベース プロジェクトをどのようにビルドするかを制御する設定を構成できます。 たとえば、警告をエラーとして扱うよう指定できます。

プロジェクトを配置用に構成する :

  • ターゲット データベース、配置の詳細を含むファイル、および配置に影響する変数を含むファイルに構成を関連付けることで、任意のビルド構成に応じた配置を構成できます。

  • 配置の詳細を含むファイル (.deploymentconfig) を変更することで、配置の詳細を制御できます。

  • 配置ごとに異なる Service Broker またはサービス証明書を使用するように変数をカスタマイズできます。

  • プロジェクトを配置するときにデータベース プロパティとサーバー プロパティを更新するかどうかと、これらのプロパティに必要な値を制御できます。

データベース プロジェクトをビルドする : Visual Studio で、またはコマンド プロンプトから MSBuild を使用して、データベース プロジェクトをビルドできます。 エラーまたは警告の最大数を構成することも、無視する警告を抑制することもできます。 データベース プロジェクトがビルドされる直前またはビルドされた直後に、ビルドの一部としてアクションを実行することもできます。

データベース プロジェクトを配置する : データベース プロジェクトは、Visual Studio を使用するか、MSBuild を使用するか、ターゲットのデータベースまたはサーバーを更新するコマンド ライン ツール VSDBCMD を使用することによって配置できます。 データベース プロジェクトに変更をチェックインする前に、完全なチーム ビルドおよび配置が成功するかどうかをテストすることもできます。

問題を解決する : SQL 共通言語ランタイム (CLR: Common Language Runtime) プロジェクトおよびアセンブリの名前を変更するときの問題など、ビルドと配置の最も一般的な問題の解決方法についてさらに詳しく学習できます。

次の手順

変更をチェックインする前に、データベースが意図されたとおりに動作するかどうかを確認するためにデータベース単体テストの実行を検討する必要があります。 作成したコードを確認するための追加のテストを作成できます。 必要に応じて、プロジェクトを配置してテストの実行時にテスト データを生成できます。 詳細については、「単体テストによるデータベースの検証」を参照してください。

関連するシナリオ

データベースのビルドおよびステージング環境または稼動環境への配置

データベースのチーム開発の開始

他のデータベースを参照するデータベースのチーム開発の開始

共有サーバー オブジェクトを参照するデータベースのチーム開発の開始

SQLCLR オブジェクトを参照するデータベースのチーム開発の開始

シナリオ : データベース サーバー上のオブジェクトのチーム開発の開始

シナリオ : データベース サーバー エンドポイントのチーム開発の開始

参照

概念

シナリオ : データベースおよびサーバー オブジェクトの作成および変更

Database Edition の用語の概要

その他の技術情報

データベース プロジェクトの変更

チーム環境でのデータベース プロジェクトの操作