データベースのビルドおよび分離開発環境への配置
分離開発環境 (サンドボックスと呼ばれることもあります) では、チームの各メンバーの変更が競合することなく、データベース コードを更新、ビルド、および配置できます。 テスト データを生成してデータベース単体テストを実行した後、コードのバージョンをステージング サーバーまたはテスト サーバーに配置し、そのバージョンを他の開発者のコードとマージできます。 データベース プロジェクトを配置する前に、それをステージング サーバーまたは運用サーバーの代わりに分離開発環境に配置するかどうかに基づいてそのプロパティを構成します。
ローカル配置用のデータベース プロジェクトの構成
配置プロパティを構成するときに、分離開発環境に固有のターゲット データベース接続、.deploymentconfig ファイル、および .sqlcmdvars ファイルを識別できます。 データベース プロジェクトの配置プロパティで、データベース プロジェクトに格納されている配置設定と異なる、分離開発環境用の設定を構成できます。 そのため、分離開発データベースへのターゲット データベース接続、異なる .deploymentconfig ファイル、および異なる .sqlcmdvars ファイルを用意できます。
配置構成の詳細
プロジェクトを分離開発環境に配置する前に、次の問題への対応を検討する必要があります。
ほとんどの場合、開発環境を対象のステージング環境または稼動環境と同じ状態にする必要があるため、データベース プロジェクトの照合順序を使用するかどうか。
保持が必要な本番データがないため、常にデータベースを再作成するかどうか。
対象のステージング環境または稼動環境と同じ状態の開発環境をセット アップするために、データベース プロパティを配置するかどうか。
この演習での配置のオーバーヘッドが増大し、配置を行うたびにデータベースを再作成する場合は利用機会がないため、データベースをバックアップするかどうか。
本番データを使用する代わりにテスト データを生成するため、データ損失が発生した場合に配置を中止するかどうか。 変更によってデータ損失が発生することを防止する場合は、予定したテストへの配置を中止できます。
データベースにあってデータベース プロジェクトにないオブジェクトに対して DROP ステートメントを生成するかどうか。 未完成のデータベース プロジェクトからオブジェクトを一時的に除外したり、保持するターゲット データベースにオブジェクトのプロトタイプを用意したりする場合があります。
SQL コマンドの変数
分離開発環境に配置する場合は、その環境に適した値を変数に割り当てることができます。 たとえば、開発環境では、ステージング環境または稼動環境とは異なる Service Broker やサービス証明書の値を割り当てる必要があります。 分離開発環境用に異なる .sqlcmdvars ファイルを指定することで、配置先が変わってもこれらの変数の値を変更する必要がなくなります。 また、この方法を使用すると、.sqlcmdvars ファイルで、構成ごとに異なる値を MSBuild の変数に割り当てるよう定義する必要もなくなります。 これは、配置する構成ごとに異なる .sqlcmdvars ファイルを指定できるためです。
サーバー プロジェクトの配置
データベース プロジェクトを配置する場合、データベースのオブジェクトと設定を配置します。 サーバー プロジェクトを配置する場合は、マスター データベースに定義されたオブジェクトを配置しますが、サーバー設定は変更しません。 サーバー設定を無視するか、ターゲット サーバーの一部の設定またはすべての設定の値がサーバー プロジェクトの指定した値と一致することを確認できます。
設定の処理方法の違いを除き、データベース プロジェクトの配置と同じ手順でサーバー プロジェクトを配置します。
ロールの配置
データベースで使用するロールを、データベースの配置先のすべてのサーバーに配置する必要があります。 ただし、開発環境では、各ロールに関連付けるユーザーの数を制限できます。 通常、テスト対象の各ロールに少なくとも 1 人のユーザーを関連付けますが、分離開発環境にすべてのユーザーを配置する必要はありません。
コマンド ライン配置
Visual Studio がインストールされていないコンピューターに次の必須コンポーネントをインストールすると、コマンド プロンプトからデータベース プロジェクトを配置できます。
Microsoft .NET Framework Version 4
SQL Server 管理オブジェクト (SMO: SQL Server Management Objects)
これらのオブジェクトを、SQL Server がインストールされたコンピューターにインストールしておく必要があります。
これらの必要条件のほかに、コンピューターに次のファイルを転送する必要があります。場合によっては、最初にユニバーサル シリアル バス (USB: Universal Serial Bus) ドライブにこれらをコピーする必要があります。
データベース プロジェクトのビルド出力 (デバッグまたはリテール)
Visual Studio の Deploy フォルダーの内容
通常、このフォルダーは [Program Files]\VSTSDB\Deploy にあります。
SQL Server Compact Edition のアセンブリ
必要条件をインストールしてファイルを転送したら、データベース プロジェクトを (.dbschema ファイルの形で) ターゲット データベースに配置できます。
参照データ
データベース プロジェクトの配置後スクリプトにステートメントを追加し、1 つ以上のテーブルに参照データを設定できます。 詳細については、「データベース配置時の参照データのテーブルへの追加」を参照してください。
また、1 つ以上のテーブルを同期する場合は、配置されたデータベースと参照データが格納されたデータベースを比較することもできます。 詳細については、「1 つ以上のテーブルのデータを参照データベースのデータと比較して同期する」を参照してください。
一般的なタスク
次の表に、このシナリオをサポートする一般的なタスクの説明と、それらのタスクを正常に完了する方法の詳細へのリンクを示します。
タスク |
関連する参照先 |
---|---|
ビルドおよび配置を開始する: 初めてのデータベース プロジェクトを構成、ビルド、および配置する前に、チーム環境でデータベース プロジェクトを使用する方法を理解しておく必要があります。 また、ビルドと配置のプロセスに対する理解を向上し、プロジェクトのビルド方法や配置方法を制御するすべてのプロパティと設定についても学習できます。 |
|
実行して学習する: 入門編のチュートリアルを完了することで、分離開発環境の作成からベースラインの設定および反復開発の実行までの全体的なプロセスについて短時間で学習できます。 |
|
完成したオブジェクトのみを配置する: 配置またはテストできる状態ではないデータベース オブジェクトの定義を含むファイルを除外できます。 |
|
プロジェクトをビルド用に構成する: データベース プロジェクトのビルド方法を制御する設定を構成できます。 たとえば、警告をエラーとして扱うかどうかを指定できます。 |
|
プロジェクトを配置用に構成する:
|
|
参照またはルックアップ テーブルを設定する: データベース プロジェクトを配置するときに、参照データをテーブルに追加できます。 この方法は、あまり変更されないデータ (配送業者に関する情報など) を含むテーブルに適用すると便利です。 |
|
データベース プロジェクトをビルドする: Visual Studio またはコマンド プロンプトで MSBuild を使用してデータベース プロジェクトをビルドできます。 データベース プロジェクトに表示されるエラーまたは警告の最大数を構成し、警告を無視する場合はそれらを抑制できます。 ビルドの一部として、データベース プロジェクトのビルドの直前または直後にアクションを実行できます。 |
|
データベース プロジェクトを配置する: Visual Studio で、あるいは MSBuild またはコマンド ライン ツール VSDBCMD を使用してデータベース プロジェクトを配置し、ターゲット データベースまたはサーバーを更新できます。 変更をデータベース プロジェクトにチェックインする前に、チーム ビルドと配置のすべてが正常に完了しているかどうかをテストすることもできます。 |
|
問題をトラブルシューティングする: SQL 共通言語ランタイム (CLR: Common Language Runtime) のプロジェクトやアセンブリの名前を変更するときなどに発生する、ビルドと配置に関する最も一般的な問題をトラブルシューティングする方法をさらに詳しく学習できます。 |
次の手順
変更をチェックインする前に、データベース単体テストを実行して、データベースが意図したとおりに動作するかどうかを検証する必要があります。 追加のテストを記述して、作成した任意のコードを検証できます。 必要に応じて、プロジェクトを配置し、テストを実行するときにテスト データを生成できます。 詳細については、「単体テストを使用したデータベース コードの検証」を参照してください。
関連するシナリオ
データベースのビルドとステージング環境または稼動環境への配置
共有サーバー オブジェクトを参照するデータベースのチーム開発の開始
SQLCLR オブジェクトを参照するデータベースのチーム開発の開始