方法 : Team Foundation ビルドを使用して変更を配置する
Visual Studio 内でデータベースをビルドおよび配置するには、MSBuild または Team Foundation ビルドを使用できます。 データベース プロジェクトをビルド ラボ環境でビルドおよび配置する場合は、Team Foundation ビルドを使用することになります。 Team Foundation ビルドを使用するには、あらかじめコンピュータにインストールしておく必要があります。 詳細については、「Team Foundation ビルドの概要」を参照してください。
Team Foundation ビルドを使用して変更を配置する手順は、次のとおりです。
ビルド定義を作成します。
ビルド プロジェクト ファイルを手動で変更し、標準の AfterDropBuild ターゲットをオーバーライドします。
データベース プロジェクト ファイルを手動で変更し、ターゲット データベースと接続を指定します。
更新したファイルをチェックインします。
新しいビルド定義を使用してデータベース プロジェクトを配置します。
Team Foundation ビルドを使用して変更を配置するには、事前に次の作業が必要です。
データベース プロジェクトを用意して、プロパティを設定します。
データベース プロジェクトをバージョン管理にチェックインします。
ビルド定義の作成
ビルド定義を作成するには
チーム エクスプローラで Visual Studio を開きます。
配置するデータベース プロジェクトを含むソリューションを開きます。
ビルド定義を作成します。 詳細については、「方法 : ビルド定義を作成する」を参照してください。 ビルド定義を作成するときに、ビルド対象として現在のソリューションを指定します。 カスタム プロジェクト構成を作成していない場合、[既定の構成] をクリックします。
次に、BuildDefinition.proj ファイルを変更します。
ビルド プロジェクト ファイルの変更
データベース プロジェクトを配置するには、AfterDropBuild ターゲットを SqlDeploy タスクでオーバーライドする必要があります。
ビルド プロジェクト ファイルを変更するには
バージョン管理から BuildDefinition.proj ファイルをチェックアウトします。 Team Foundation バージョン管理を使用している場合は、ソース管理エクスプローラを開いてチーム プロジェクトを展開し、TeamBuildTypes フォルダを展開してビルド プロジェクト ファイルを見つけます。
任意のエディタで BuildDefinition.proj ファイルを開きます。
ファイルの末尾で、</ItemGroup> 要素と </Project> 要素の間に次のコードを追加します。
<Target Name="AfterDropBuild"> <MSBuild Projects="$(SolutionRoot)\SolutionName\ProjectName\ProjectName.dbproj" Properties="Configuration=Default;OutDir=$(SolutionRoot)\..\binaries\Default\" Targets="Deploy" /> </Target>
「SolutionName」をデータベース プロジェクトを含むソリューション名に置き換え、「ProjectName」をデータベース プロジェクト名に置き換えます。 データベース プロジェクトの既定の構成を使用していない場合は、「Configuration」と「OutDir」の「Default」を両方とも適切なプロジェクト構成の名前に置き換えます。
Team Foundation ビルドは、格納場所 (一般にはネットワーク共有) にファイルをコピーします。 ビルド コンピュータからではなく、その格納場所からデータベースを配置する場合は、上記のコードの代わりに次のコードを使用します。
<Target Name="AfterDropBuild"> <MSBuild Projects="$(SolutionRoot)\SolutionName\ProjectName\ ProjectName.dbproj" Properties="Configuration=Release;OutDir=$(DropLocation)\$(BuildNumber)\Release\" Targets="Deploy"/> </Target>
変更を BuildDefinition.Proj に保存します。
データベース プロジェクト ファイルの変更
ターゲット接続とターゲット データベースは、ProjectName.dbproj.user ファイルに格納されます。このファイルはユーザー固有で、通常はバージョン管理にチェックインされません。 これらの設定をデータベースに配置する必要があります。 したがって、ProjectName.dbproj ファイルを手動で変更して、ターゲット接続とターゲット データベースを指定する必要があります。
データベース プロジェクト ファイルを変更するには
バージョン管理システムから ProjectName.dbproj ファイルをチェックアウトします。
[ファイル] メニューの [ソリューションを閉じる] をクリックします。 開いているソリューション内のプロジェクト ファイルは変更できないため、この手順が必要となります。
[ファイル] メニューの [開く] をポイントし、[ファイル] をクリックします。
データベース プロジェクト ファイル (ProjectName.dbproj) を含むフォルダを参照し、ProjectName.dbproj.user をダブルクリックします。
ビルドする構成用の ProjectName.dbproj.user ファイルのセクションから [ターゲット データベース] プロパティおよび [ターゲット接続文字列] プロパティの定義を含む行をコピーします。 行は次のようになります。
<TargetDatabase>MyTargetDatabaseName</TargetDatabase> <TargetConnectionString>Data Source=ServerName\InstanceName;Integrated Security=True;Pooling=False</TargetConnectionString>
メモ : ターゲット データベースの名前を指定しなかった場合は、データベース プロジェクトの名前が使用されます。
この 2 つのエントリをクリップボードにコピーします。
[ファイル] メニューの [開く] をポイントし、[ファイル] をクリックします。
データベース プロジェクト ファイル (ProjectName.dbproj) を含むフォルダを参照し、ProjectName.dbproj をダブルクリックします。
Team Foundation ビルドを使用して配置する構成の PropertyGroup までスクロール ダウンします。
コピーしたエントリをクリップボード経由でプロジェクト ファイルに貼り付けます。 [ターゲット データベース] および [ターゲット接続文字列] が既に空の要素を含んでいる場合、これらのエントリを上書きする必要があります。
[ファイル] メニューの [ProjectName.dbproj を保存] をクリックします。
更新したファイルのチェックイン
Team Foundation ビルドは、バージョン管理にチェックインされたデータベース プロジェクトのバージョンを使用します。このバージョンを使ってデータベースを配置する前に、ビルド プロジェクトおよびデータベース プロジェクト ファイルに対して行った変更をチェックインする必要があります。
更新したファイルをチェックインするには
[ファイル] メニューの [ソース管理] をポイントし、[保留中の変更をチェックイン] をクリックします。
バージョン管理システムの指示に従い、ビルド プロジェクトとデータベース プロジェクト ファイルのチェックインを完了します。
データベースの配置
ビルド定義を構成し、Team Foundation ビルドで使用するデータベース プロジェクトを設定しました。 データベースが正常に配置されたかどうかを検証するために、テスト ビルドを実行できます。
データベースを配置するには
チーム エクスプローラで、[チーム ビルド] フォルダを展開し、データベース プロジェクトを配置するために作成したビルド定義を右クリックし、[ビルド TeamProjectName をキューに配置] をクリックします。
[ビルド] ダイアログ ボックスが表示されます。
[ビルド定義]、[ビルド エージェント]、および [このビルドの格納フォルダ] の各フィールドの値がすべて適切であることを確認し、[キュー] をクリックします。
ビルド エクスプローラの [キューに挿入済み] タブが表示されます。 詳細については、「Team Foundation ビルド エクスプローラの理解」を参照してください。
参照
処理手順
方法 : データベース プロジェクトおよびサーバー プロジェクトのビルド設定を構成する
方法 : データベース プロジェクトおよびサーバー プロジェクトの配置設定を構成する
方法 : Team Foundation ビルドからデータベース単体テストを実行する