チュートリアル : 隔離されたデータベース開発環境の作成
このチュートリアルでは、分離開発環境を設定して、各データベース開発者がチームの他のメンバーに影響を及ぼさずに変更を行い、その変更をテストできるようにします。 分離データベース開発環境はデータベース プロジェクトに基づいています。データベース プロジェクトには、運用データベース内のすべてのオブジェクトの定義が格納されています。 プロジェクトを作成し、運用データベースからデータベース スキーマをインポートし、プロジェクト設定を構成します。 次に、データ生成計画を作成します。 最後に、データベース プロジェクトと関連するすべてのファイルをバージョン管理し、チームと共有できるようにします。
このチュートリアルでは管理ロールを持つユーザーとして、チームの各開発者が開発作業に使用する環境を定義します。 作業項目を終了する前に各開発者は、データ ジェネレーターを使用して現実的な架空のデータを更新されたスキーマに入力し、データベース単体テストを実行してスキーマの変更が想定したとおりに機能することを検証します。 作業項目が完了すると、各開発者は変更をバージョン管理にチェックインし、チームが変更を参照できるようにします。 変更をチェックインする前にテストを実行することによって、チームの各メンバーは、全体に及ぶリスクを最小化します。
このチュートリアルでは、以下のタスクを行います。
新規データベース プロジェクト ウィザードを使用してデータベース プロジェクトを作成する方法
新規データベース プロジェクト ウィザードを使用してデータベース スキーマをインポートし、データベース プロジェクトのプロパティを指定して、ビルドのプロパティおよび配置のプロパティを指定する方法
インポート操作の結果を確認する方法
プロジェクトをバージョン管理に追加する方法
必須コンポーネント
Visual Studio がインストールされていて、SQL Server 2008 の AdventureWorks2008 サンプル データベースに対するアクセス許可を持っている必要があります。 プロジェクトをバージョン管理に追加するには、Visual Studio Team Foundation Server などのバージョン管理ソフトウェアがインストールされている必要があります。
AdventureWorks2008 のサンプル データベースのインストール方法については、Codeplex Web サイトの「Microsoft SQL Server Product Samples (Microsoft SQL Server 製品のサンプル)」のページを参照してください。
SQL Server 2008 R2 と AdventureWorks2008R2 データベースも使用できます。 このチュートリアルでは、AdventureWorks2008R2 で異なる操作を実行する必要がある場合は、その違いを記載しています。
データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] をクリックします。
注意
Visual Studio Professional を使用している場合、[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] ノードを展開します。次に、[詳細設定] をクリックします。
[テンプレート] ボックスの一覧の [SQL Server 2008 ウィザード] をクリックします。
[名前] ボックスに「AdvWorksSandbox」と入力します。
既定の [場所] および [ソリューション名] を受け入れます。
[ソリューションのディレクトリを作成] チェック ボックスがまだオンになっていない場合はオンにします。
[ソース管理に追加] チェック ボックスがまだオフになっていない場合はオフにし、[OK] をクリックします。
新規データベース プロジェクト ウィザードが表示されます。
次に、ウィザードを使用してデータベース プロジェクトを構成し、初期データベース スキーマをインポートします。
プロジェクトを構成し、データベース スキーマをインポートするには
[ようこそ] ページを読んでから、[次へ] をクリックします。
[管理対象のデータベース プロジェクトをユーザー定義のデータベースに変更する] が選択されていることを確認します。
[SQL スクリプト ファイル] で [スキーマ別] が選択されていることを確認し、[次へ] をクリックします。
重要
プロジェクトの作成後は、プロジェクトの編成を変更できません。
[データベース オプションの設定] ページの [データベース プロジェクトで作成するオブジェクトに使用する、既定のスキーマを指定してください] に「HumanResources」と入力し、[次へ] をクリックします。
注意
これらのオプションは、プロジェクトの作成後に変更できます。 詳細については、「方法: データベース プロジェクトのデータベース プロパティを構成する」を参照してください。
[データベース スキーマのインポート] ページの [既存のスキーマのインポート] チェック ボックスをオンにします。
[ソース データベース接続] ボックスの一覧で、サーバーおよび AdventureWorks2008 データベースまたは AdventureWorks2008R2 データベースに対応する接続をクリックします。 接続がまだ存在しない場合は、[新しい接続] をクリックして作成します。 接続を指定しない場合、データベース プロジェクトは作成されますが、スキーマはインポートされません。
注意
データベース プロジェクトにまだデータベース オブジェクトがない場合は、データベース スキーマを後からインポートできます。 詳細については、「方法: データベース オブジェクトと設定をインポートする」を参照してください。
オブジェクトのインポートおよび設定用の既定のオプションを受け入れ、[次へ] をクリックします。
[ビルドと配置の構成] ページの [ターゲット接続] で [編集] をクリックし、開発環境を作成するデータベース サーバーへの接続を指定します。
[ターゲット データベース名] が指定されていない場合は、「AdvWorksSandbox」と入力します。
[既定の配置照合順序] ボックスの一覧の [プロジェクトの照合順序を使用] をクリックします。
この手順では、プロジェクトをターゲット データベースと比較するときに、配置エンジンがデータベース プロジェクトの照合順序を使用するようにします。
[データ損失が発生する場合に増分配置をブロック] チェック ボックスをオフにします。
分離開発環境には生成されたテスト データのみが格納されるため、データ損失が生じても問題ありません。
[完了] をクリックして、データベース プロジェクトを作成し、データベースをインポートします。
データベース プロジェクトが作成されます。 この処理には数分かかることがあります。
結果の概要を確認し、[完了] をクリックします。
バックグラウンドでは、Visual Studio がデータベース スキーマの分析を継続しています。 ステータス バーには、データベース スキーマが完全に分析される前に完了する必要のある操作の数を示すメッセージが表示されます。
次に、作成したデータベース プロジェクトを調べます。
作成されたプロジェクトを確認するには
ソリューション エクスプローラーで [AdvWorksSandbox] ノードを展開し、スキーマ オブジェクトの子ノードを展開します。
階層内で [スキーマ オブジェクト] ノードの下にある下位ノードを調べます。
ソリューション エクスプローラーには、オブジェクトのインポート元のデータベースのスキーマ内にあるオブジェクトを定義するファイルが表示されます。
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューで、[AdvWorksSandbox] ノードを展開します。
階層内で [AdvWorksSandbox] ノードの下にある下位ノードを調べます。
スキーマ ビューには、ソリューション エクスプローラーに表示されるファイルで定義されているオブジェクトが表示されます。
ソリューション エクスプローラーで、[AdvWorksSandbox] ノードをクリックします。
[プロジェクト] メニューの [AdvWorksSandbox のプロパティ] をクリックします。
[プロパティ] ページの [配置] タブをクリックします。
注意
[マイ プロジェクトの設定] を構成するときに変更した配置の設定は、プロジェクト ファイル (.dbproj) に保存されて、ソース管理にチェックインされます。 以降のチュートリアルでは、特定の開発者の環境の設定を構成します。
[ターゲット データベース名] が指定されていない場合は、「AdvWorksSandbox」と入力します。
[ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。
各開発者は、データベースの自分のコピーをホストするデータベース サーバーへの接続文字列を指定します。
プロジェクトを分離開発環境に配置するには
ソリューション エクスプローラーで、[AdvWorksSandbox] ノードをクリックします。
このプロジェクトを、元の AdventureWorks2008 データベースまたは AdventureWorks2008R2 データベースを実行中の同じデータベース サーバーに配置する場合は、ファイル名を変更して競合を避ける必要があります。 元の AdventureWorks2008 データベースまたは AdventureWorks2008R2 データベースがないサーバーに配置する場合は、手順 7. に進みます。
[Schema Objects] フォルダー、[Database Level Objects] フォルダー、[Storage] フォルダー、[Files] フォルダーの順に展開します。
AdventureWorks2008_Data.sqlfile.sql、AdventureWorks2008_Log.sqlfile.sql、FileStreamDocuments.sqlfile.sql の 3 つのファイルが表示されます。 SQL Server 2008 R2 を使用している場合は、AdventureWorks2008R2_Data.sqlfile.sql、AdventureWorks2008R2_Log.sqlfile.sql、および FileStreamDocuments2008R2.sqlfile.sql の 3 つのファイルが表示されます。
注意
古いバージョンの AdventureWorks では FILESTREAM は使用されていません。 古いバージョンの AdventureWorks をインポートする場合は、手順 7. に進みます。
[FileStreamDocuments.sqlfile.sql] をダブルクリックします。
Transact-SQL エディターでファイルが開きます。
ファイルの定義を次のように変更します。
ALTER DATABASE [$(DatabaseName)] ADD FILE (NAME = [FileStreamDocuments], FILENAME = '$(DefaultDataPath)SandboxDocuments') TO FILEGROUP [DocumentFileStreamGroup];
AdventureWorks2008R2 を使用している場合は、代わりに次の定義を使用します。
ALTER DATABASE [$(DatabaseName)] ADD FILE (NAME = [FileStreamDocuments2008R2], FILENAME = '$(DefaultDataPath)SandboxDocuments') TO FILEGROUP [Document2008R2FileStreamGroup];
[ファイル] メニューの [すべてを保存] をクリックします。
[プロジェクト] メニューの [AdvWorksSandbox のプロパティ] をクリックします。
[プロジェクトのプロパティ] ウィンドウが表示されます。
[配置] タブをクリックします。
[配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
重要
配置動作を変更しない場合は、配置スクリプトの生成のみ行い、ターゲット データベースには何も配置されません。
[ビルド] メニューの [AdvWorksSandbox の配置] をクリックします。
データベース プロジェクトのビルド スクリプトが生成され、分離開発環境をホストすることを選択したデータベース サーバーに配置されます。 配置が完了すると、"配置に成功しました。" というメッセージが [出力] ウィンドウに表示されます。
データベース プロジェクトを定義し、運用データベースからスキーマをインポートしました。 チームのメンバーが利用できるようにソリューションをバージョン管理に追加することができます。
チームがプロジェクトを利用できるようにする
プロジェクトをバージョン管理に追加するには
ソリューション エクスプローラーで、[AdvWorksSandbox] ノードをクリックします。
[ファイル] メニューの [ソース管理] をポイントし、[ソリューションをソース管理に追加] をクリックします。
ここで、インストール済みのバージョン管理ソフトウェアを使用して操作します。 このチュートリアルでは、Team Foundation Server にプロジェクトを追加する手順について説明します。 異なるバージョン管理ソフトウェアを使用する場合、同等の手順を実行してください。 Team Foundation Server を使用している場合は、[Team Foundation Server に接続] ダイアログ ボックスが表示されます。
[Team Foundation Server に接続] で、ソリューションを追加するチーム プロジェクトが格納されているサーバーをクリックします。
注意
データベース プロジェクトを追加できるチーム プロジェクトがない場合は、「プロジェクトの計画および追跡」を参照してください。
[チーム プロジェクト] で、データベース プロジェクトを追加するチーム プロジェクトをクリックし、[OK] をクリックします。
[ソリューション AdvWorksSandbox をソース管理に追加] ダイアログ ボックスが表示されます。
[OK] をクリックして既定値を受け入れます。
データベース プロジェクトおよびそれを格納するファイルがバージョン管理されます。 最初は、それらはまだチェックアウトされています。 他のチーム メンバーがアクセスする前にチェックインする必要があります。
[表示] メニューの [その他のウィンドウ] をポイントし、[保留中の変更] をクリックします。
[保留中の変更] ウィンドウが表示されます。
"コメント" フィールドに、「Initial database project creation, schema import, and data generation」と入力します。
[保留中の変更] ウィンドウで、ツール バーの [チェックイン] をクリックします。
データベース プロジェクトおよびそれに含まれているファイルがチェックインされるときに、[チェックインの進行状況] ダイアログ ボックスが表示されます。 ソリューション エクスプローラー内のアイコンが更新され、ファイルがバージョン管理にチェックインされたことを示します。
次の手順
データベース プロジェクトはバージョン管理にチェックインされました。次の手順は、チームが変更を開始する前に品質保証の方策を確立することです。 次の入門用チュートリアル「チュートリアル : 分離開発環境のベースライン設定」では、単体テストを作成し、分離開発環境でビルド、配置、および実行します。
参照
処理手順
方法: データベース プロジェクトおよびサーバー プロジェクトを作成する
概念
履歴の変更
日付 |
履歴 |
理由 |
---|---|---|
SQL Server 2008 R2 と AdventureWorks2008R2 のサポートを追加。 |
SP1 機能変更 |