チュートリアル : 分離開発環境でデータベースの開発を繰り返し実行する
「チュートリアル : 隔離されたデータベース開発環境の作成」では、データベース管理者として、データベース プロジェクトの作成および運用サーバーからのスキーマ定義とデータベース オブジェクト定義のインポートを行いました。 2 番目のチュートリアルでは、データベースの単体テストを作成して、既存の機能の確認およびクリーンなベースラインの確立を行いました。
このチュートリアルでは、3 番目の最後の作業として、2 つのデータベースの列の名前を変更する、一般的な反復開発タスクを実行します。 これらの変更を分離開発環境で実行することにより、変更を共有する準備が完了するまで、チームの他のメンバに対するリスクを最小限に抑えることができます。
このチュートリアルでは、以下のタスクを行います。
データベース リファクタリングを使用して列の名前を変更することにより、その列に対するすべての参照の更新に必要な時間を短縮したり、エラーが発生する可能性を減らしたりする。
データベースの単体テストを実行し、変更によって既存の機能が無効にならないことを確認する。
変更をバージョン管理にチェックインし、チームの他のメンバが利用できるようにする。
前提条件
Visual Studio Team System Database Edition がインストールされていて、SQL Server 2005 の AdventureWorks2005 サンプル データベースに対するアクセス許可を持っている必要があります。また、このチュートリアルは、「チュートリアル : 隔離されたデータベース開発環境の作成」および「チュートリアル : 分離開発環境のベースライン設定」が既に実行済みであることを前提としています。
データベースの列の名前を変更する
一般的な開発タスクに、データベース オブジェクトの名前の変更があります。 このチュートリアルでは、[HumanResources].[Employee] テーブルの [EmployeeID] 列を EmployeeNumber という名前に変更します。 EmployeeID] 列は、複数の外部キーとストアド プロシージャによって参照されます。 手動で変更するには、複数のファイルを変更する必要があります。
変更を行う前に、最新バージョンのデータベース プロジェクトを使用していることを確認する必要があります。
データベース プロジェクトの最新バージョンを取得するには
チーム エクスプローラで、データベース プロジェクトが含まれているチーム プロジェクト ノードを展開します。
ソース管理ノードをダブルクリックし、ソース管理エクスプローラを開きます。
ソース管理エクスプローラで、データベース プロジェクトを右クリックし、[最新バージョンの取得] をクリックします。
データベース プロジェクトが含まれた最新バージョンのソリューションがコンピュータに取得されます。
EmployeeID を EmployeeNumber に変更するには
ソリューション エクスプローラで既に AdvWorksSandbox ソリューションが開かれている場合は、手順 4. に進みます。
[ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。
[プロジェクトを開く] ダイアログ ボックスが表示されます。
AdvWorksSandbox ソリューションをクリックし、[開く] をクリックします (既定では、このソリューションは My Documents\Visual Studio 2005\Projects\AdvWorksSandbox にあります)。
ソリューション エクスプローラで AdvWorksSandbox ソリューションが開きます。
[表示] メニューを開き、[スキーマ ビュー] をクリックします。
[スキーマ ビュー] で、AdvWorksSandbox ノードを展開し、HumanResorces スキーマを展開して、Tables フォルダを展開します。
Tables フォルダで、Employee テーブルを展開し、Columns フォルダを展開します。
EmployeeID フォルダを右クリックし、[リファクタ] をポイントして、[名前の変更] をクリックします。
[名前の変更] ダイアログ ボックスに、既存の列名が表示されます。
[新しい名前] ボックスに「EmployeeNumber」と入力します。
[変更のプレビュー] チェック ボックスがオフになっている場合はオンにして、[OK] をクリックします。
[変更のプレビュー – 名前の変更] ダイアログ ボックスが開き、名前を変更する列を参照しているプロジェクトのすべての項目が表示されます。
いずれかの変更をクリックします。
[変更のプレビュー] ダイアログ ボックスに変更の詳細が表示されます。
変更内容を確認した後、[適用] をクリックして変更を適用します。
変更したすべてのファイルが、バージョン管理からチェックアウトされます。
[保留中の変更] ウィンドウに、保留中の変更を表示できます。 [保留中の変更] ウィンドウに、次のファイルが表示されます。
AWGenPlan.dgen
Employee.table.sql
Employee.PK_Employee_EmployeeID.sql
vSalesPerson.view.sql
uspGetManagerEmployees.proc.sql
vEmployee.view.sql
vEmployeeDepartmentHistory.view.sql
uspUpdateEmployeePersonalInfo.proc.sql
uspUpdateEmployeeHireInfo.proc.sql
uspUpdateEmployeeLogin.proc.sql
PurchaseOrderHeader.FK_PurchaseOrderHeader_Employee_EmployeeID.fkey.sql
Employee.FK_Employee_Employee_ManagerID.fkey.sql
EmployeePayHistory.FK_EmployeePayHistory_Employee_EmployeeID.fkey.sql
EmployeeDepartmentHistory.FK_EmploymentDepartmentHistory_Employee_EmployeeID.fkey.sql
JobCandidate.FK_JobCandidate_Employee_EmployeeID.fkey.sql
EmployeeAddress.FK_EmployeeAddress_Employee_EmployeeID.fkey.sql
SalesPerson.FK_SalesPerson_Employee_EmployeeID.fkey.sql
Employee.uEmployee.trigger.sql
データベースの単体テストを実行する
すべての変更が完了してバージョン管理にチェックインする前に、データベースの単体テストを実行し、アプリケーションが正常に機能することを確認してから、チームでこれらの変更を共有する必要があります。
データベースの単体テストを実行し、発生する可能性のあるすべての問題を識別するには
[テスト] メニューの [ウィンドウ] をポイントし、[テスト ビュー] をクリックします。
[テスト ビュー] ウィンドウにいくつかのテストの一覧が表示されます。 既定では、ManualTest1 および TestMethod1 という名前のテストが作成されます。 dbo_uspGetManagerEmployeesTest および dbo_ufpLeadingZeroTest という名前のテストは、前のチュートリアルで作成したテストです。
dbo_uspGetManagerEmployeesTest と dbo_ufpLeadingZeroTest の両方を選択し、いずれかを右クリックして、[選択範囲の実行] をクリックします。
[テスト結果] ウィンドウの結果を表示します。
分離開発環境にデータベース プロジェクトが配置され、テスト データが生成された後、テストが実行されてテストに合格します。
データベース プロジェクトを運用データベースと比較する
更新したデータベース プロジェクトと運用データベースのスキーマを比較すると、それらの相違点を特定できます。 いずれかを更新するのではなくスキーマのみを比較するため、どちらも比較元または比較対象として指定できます。
データベース プロジェクト スキーマを運用データベースと比較するには
[データ] メニューの [スキーマ比較] をポイントし、[新しいスキーマ比較] をクリックします。
[新しいスキーマ比較] ダイアログ ボックスが表示されます。
比較元スキーマの既定値を受け入れます。
データベース プロジェクト AdvWorksSandbox が指定されます。
比較対象スキーマの Database 一覧で、データベース スキーマを最初にインポートした AdventureWorks データベースへの接続をクリックし、[OK] をクリックします。
スキーマが比較されます。 このチュートリアルで行った変更のみが相違点として見つかります。
スキーマ間の相違点を調べます。 完了したら、[スキーマ比較] ウィンドウを閉じます。
これで、変更をチームで共有できます。
変更をチェックインする
すべての変更をチーム メンバと共有する準備が完了していることを確認した後、それらの変更をバージョン管理にチェックインします。 通常、データベース プロジェクト、単体テスト プロジェクト、および関連するアプリケーション コードとアプリケーション単体テストを含め、すべての変更をソリューションにチェックインします。
変更をチェックインし、チームで利用できるようにするには
[表示] メニューの [その他のウィンドウ] をポイントし、[保留中の変更] をクリックします。
[保留中の変更] ウィンドウが表示されます。
[コメント] に、「名前が変更された EmployeeID 列」と入力します。
[保留中の変更] ウィンドウで、ツール バーの [チェックイン] をクリックします。
データベース プロジェクトおよびそれに含まれているファイルがバージョン管理にチェックインされるときに、[チェックインの進行状況] ダイアログ ボックスが表示されます。 ソリューション エクスプローラ内のアイコンが更新され、ファイルがバージョン管理にチェックインされたことを示します。
次の手順
この反復処理は、チームがデータベースの各バージョンを運用のために配置するたびに毎回発生します。 それぞれの開発者が個別に変更を行い、それらをテストして正しいことを確認し、更新をバージョン管理にチェックインしてチームで共有します。
運用のためにデータベースを配置するプロセスは簡単です。
データベース プロジェクトとそのテストを構成するファイルのバージョンには、配置するバージョンの一部であることを示すラベルが付けられます。
ラベル付けされたソースを取得し、ビルド スクリプトを生成します。
必要に応じてビルド スクリプトを確認して変更し、ステージング サーバーにテスト配置します。 配置するたびに、データベース プロジェクトをステージング サーバーのスキーマと比較できます。
運用環境に配置できるようになるまでビルド スクリプトに対する変更を繰り返し実行した後、変更済みのビルド スクリプトを運用環境に配置します。
データベース プロジェクトに反映されない変更を行う必要がある場合は、更新済みの運用サーバーからデータベース プロジェクトにそれらの更新をインポートできます。
Database Edition の詳細を学習するには、それぞれの機能に関するチュートリアルを実行してください。