チュートリアル: 分離開発環境でデータベースの開発を繰り返し実行する

チュートリアル : 隔離されたデータベース開発環境の作成」では、データベース管理者として、データベース プロジェクトの作成および運用サーバーからのスキーマ定義とデータベース オブジェクト定義のインポートを行いました。 2 番目のチュートリアルでは、データベースの単体テストを作成して、既存の機能の確認およびクリーンなベースラインの確立を行いました。

このチュートリアルでは、3 番目の最後の作業として、2 つのデータベースの列の名前を変更する、一般的な反復開発タスクを実行します。 これらの変更を分離開発環境で実行することにより、変更を共有する準備が完了するまで、チームの他のメンバーに対するリスクを最小限に抑えることができます。

このチュートリアルでは、以下のタスクを行います。

  1. データベース リファクタリングを使用して列の名前を変更することにより、その列に対するすべての参照の更新に必要な時間を短縮したり、エラーが発生する可能性を減らしたりする。

  2. データベースの単体テストを実行し、変更によって既存の機能が無効にならないことを確認する。

  3. 変更をバージョン管理にチェックインし、チームの他のメンバーが利用できるようにする。

必須コンポーネント

Visual Studio Premium または Visual Studio Ultimate がインストールされていて、SQL Server 2008 の AdventureWorks2008 サンプル データベースに対するアクセス許可を持っている必要があります。 また、このチュートリアルは、「チュートリアル : 隔離されたデータベース開発環境の作成」および「チュートリアル : 分離開発環境のベースライン設定」が既に実行済みであることを前提としています。

データベースの列の名前を変更する

一般的な開発タスクに、データベース オブジェクトの名前の変更があります。 このチュートリアルでは、[HumanResources].[Employee] テーブルの BusinessEntityID 列を BusinessEntityNumber という名前に変更します。 BusinessEntityID 列は、複数の外部キーとストアド プロシージャによって参照されます。 手動で変更するには、複数のファイルを変更する必要があります。

変更を行う前に、最新バージョンのデータベース プロジェクトを使用していることを確認する必要があります。

データベース プロジェクトの最新バージョンを取得するには

  1. チーム エクスプローラーで、データベース プロジェクトが含まれているチーム プロジェクト ノードを展開します。

  2. ソース管理ノードをダブルクリックし、ソース管理エクスプローラーを開きます。

  3. ソース管理エクスプローラーで、データベース プロジェクトを右クリックし、[最新バージョンの取得] をクリックします。

    データベース プロジェクトが含まれた最新バージョンのソリューションがコンピューターに取得されます。

BusinessEntityID の名前を BusinessEntityNumber に変更するには

  1. ソリューション エクスプローラーで既に AdvWorksSandbox ソリューションが開かれている場合は、手順 4. に進みます。

  2. [ファイル] メニューの [開く] をポイントし、[プロジェクト/ソリューション] をクリックします。

    [プロジェクトを開く] ダイアログ ボックスが表示されます。

  3. AdvWorksSandbox ソリューションをクリックし、[開く] をクリックします (既定では、このソリューションは My Documents\Visual Studio 2005\Projects\AdvWorksSandbox にあります)。

    ソリューション エクスプローラーで AdvWorksSandbox ソリューションが開きます。

  4. [表示] メニューを開き、[スキーマ ビュー] をクリックします。

  5. スキーマ ビューで、AdvWorksSandbox ノードを展開し、HumanResources スキーマを展開し、Tables フォルダーを展開します。

  6. Tables フォルダーで、Employee テーブルを展開し、Columns フォルダーを展開します。

  7. BusinessEntityID フォルダーを右クリックし、[リファクター] をポイントして、[名前の変更] をクリックします。

    [名前の変更] ダイアログ ボックスに、既存の列名が表示されます。

  8. [新しい名前] ボックスに「BusinessEntityNumber」と入力します。

  9. [警告またはエラーを含むスキーマ オブジェクトの参照を更新する] チェック ボックスをオンにします。

  10. [変更のプレビュー] チェック ボックスがオフになっている場合はオンにして、[OK] をクリックします。

    [変更のプレビュー – 名前の変更] ダイアログ ボックスが開き、名前を変更する列を参照しているプロジェクトのすべての項目が表示されます。

  11. いずれかの変更をクリックします。

    [変更のプレビュー] ダイアログ ボックスに変更の詳細が表示されます。

  12. 変更内容を確認した後、[適用] をクリックして変更を適用します。

    変更したすべてのファイルが、バージョン管理からチェックアウトされます。

[保留中の変更] ウィンドウに、保留中の変更を表示できます。 [保留中の変更] ウィンドウに、次のファイルが表示されます。

  • Employee.table.sql

  • ufnGetContactInformation.function.sql

  • uspGetEmployeeManagers.proc.sql

  • uspGetManagerEmployees.proc.sql

  • uspUpdateEmployeeHireInfo.proc.sql

  • uspUpdateEmployeeLogin.proc.sql

  • uspUpdateEmployeePersonalInfo.proc.sql

  • FK_EmployeeDepartmentHistory_Employee_BusinessEntityID.fkey.sql

  • FK_EmployeePayHistory_Employee_BusinessEntityID.fkey.sql

  • FK_Employee_Person_BusinessEntityID.fkey.sql

  • FK_JobCandidate_Employee_BusinessEntityID.fkey.sql

  • PK_Employee_BusinessEntityID.pkey.sql

  • vEmployee.view.sql

  • vEmployeeDepartment.view.sql

  • FK_Document_Employee_Owner.fkey.sql

  • FK_PurchaseOrderHeader_EmployeeID.fkey.sql

  • FK_SalesPerson_Employee_BusinessEntityID.fkey.sql

  • vSalesPerson.view.sql

  • vSalesPersonSalesByFiscalYears.view.sql

  • AWGenPlan.dgen

データベースの単体テストを実行する

すべての変更が完了してアプリケーションをバージョン管理にチェックインする前に、データベース単体テストを実行し、アプリケーションが正常に機能することを確認してから、チームでこれらの変更を共有する必要があります。

データベースの単体テストを実行し、発生する可能性のあるすべての問題を識別するには

  1. [テスト] メニューの [ウィンドウ] をポイントし、[テスト ビュー] をクリックします。

    [テスト ビュー] ウィンドウにいくつかのテストの一覧が表示されます。 既定では、ManualTest1 および TestMethod1 という名前のテストが作成されます。 dbo_ufpLeadingZeroTest という名前のテストは、前のチュートリアルで作成したテストです。

  2. [dbo_ufpLeadingZeroTest] を右クリックし、[選択範囲の実行] をクリックします。

  3. [テスト結果] ウィンドウの結果を確認します。

    分離開発環境にデータベース プロジェクトが配置され、テスト データが生成された後、テストが実行されてテストに合格します。

データベース プロジェクトを運用データベースと比較する

更新したデータベース プロジェクトと運用データベースのスキーマを比較すると、それらの相違点を特定できます。 いずれかを更新するのではなくスキーマのみを比較するため、どちらも比較元または比較対象として指定できます。

データベース プロジェクト スキーマを運用データベースと比較するには

  1. [データ] メニューの [スキーマ比較] をポイントし、[新しいスキーマ比較] をクリックします。

    [新しいスキーマ比較] ダイアログ ボックスが表示されます。

  2. 比較元スキーマの既定値を受け入れます。

    データベース プロジェクト AdvWorksSandbox が指定されます。

  3. 比較対象スキーマの Database 一覧で、データベース スキーマを最初にインポートした AdventureWorks データベースへの接続をクリックし、[OK] をクリックします。

    スキーマが比較されます。 このチュートリアルで行った変更のみが相違点として見つかります。

  4. スキーマ間の相違点を調べます。 完了したら、[スキーマ比較] ウィンドウを閉じます。

    これで、変更をチームで共有できます。

変更をチェックインする

すべての変更をチーム メンバーと共有する準備が完了していることを確認した後、それらの変更をバージョン管理にチェックインします。 通常、データベース プロジェクト、単体テスト プロジェクト、および関連するアプリケーション コードとアプリケーション単体テストを含め、すべての変更をソリューションにチェックインします。

変更をチェックインし、チームで利用できるようにするには

  1. [表示] メニューの [その他のウィンドウ] をポイントし、[保留中の変更] をクリックします。

    [保留中の変更] ウィンドウが表示されます。

  2. [コメント] に、「名前が変更された BusinessEntityID 列」と入力します。

  3. [保留中の変更] ウィンドウで、ツール バーの [チェックイン] をクリックします。

    データベース プロジェクトおよびそれに含まれているファイルがバージョン管理にチェックインされるときに、[チェックインの進行状況] ダイアログ ボックスが表示されます。 ソリューション エクスプローラー内のアイコンが更新され、ファイルがバージョン管理にチェックインされたことを示します。

次の手順

この反復処理は、チームがデータベースの各バージョンを運用のために配置するたびに毎回発生します。 それぞれの開発者が個別に変更を行い、それらをテストして正しいことを確認し、更新をバージョン管理にチェックインしてチームで共有します。 データベースをビルドおよび配置する方法の詳細については、「データベースのビルドおよび分離開発環境への配置」および「データベースのビルドとステージング環境または稼動環境への配置」を参照してください。

注意

AdventureWorks2008 のインポート元と同じサーバーに配置すると、エラーが表示される場合があります。 既に存在するためファイルを作成できないことを示すエラーが表示された場合は、最初のチュートリアルの手順を抜かした可能性があります。 詳細については、「プロジェクトを分離開発環境に配置するには」を参照してください。

Visual Studio のデータベース機能の詳細については、それぞれの機能領域に関する詳細なチュートリアルを実行してください。

参照

概念

データベースのコードとデータのリファクタリング

データベースの単体テストの実行

単体テストを使用したデータベース コードの検証

データベース スキーマの比較と同期