チュートリアル : 複合プロジェクトを使用したデータベース プロジェクトのパーティション化
複合プロジェクトを使用すると、大規模なデータベースを、まとめて配置される一連の依存データベース プロジェクトにパーティション化することで適切に管理できます。 このチュートリアルでは、次の作業について説明します。
データベース スキーマが定義されるデータベース プロジェクトを作成する
特定のスキーマが定義されるテーブルを含む別のデータベース プロジェクトを作成する
特定のスキーマのストアド プロシージャが定義される第 3 のデータベース プロジェクトを作成する
第 3 のプロジェクトとその依存関係を構成、ビルド、および配置する
前提条件
Visual Studio Team System Database Edition がインストールされており、SQL Server が実行されているサーバーに対するアクセス権を持っている必要があります。
スキーマ用のデータベース プロジェクトを作成する
ソース データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] ボックスの一覧の [データベース プロジェクト] ノードを展開し、[SQL Server 2005] をクリックします。
メモ : ターゲット データベースに異なるバージョンの SQL Server がある場合は、そのバージョンに対応するプロジェクトの種類をクリックできます。
[テンプレート] ボックスの一覧の [SQL Server 2005 データベース プロジェクト] をクリックします。
[名前] ボックスに「MySchemaProject」と入力します。
[場所] ボックスに、データベース プロジェクトを作成するパスを入力するか参照します。
[ソリューション名] ボックスに、「MyCompositeSolution」と入力し、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラに表示されます。 次に、プロジェクトにスキーマを定義します。
スキーマを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
[MySchemaProject] ノードを展開し、[スキーマ] ノードを展開します。[スキーマ] ノードを右クリックし、[追加] をポイントして、[スキーマ] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [スキーマ] をクリックします。
[名前] ボックスに「Person」と入力し、[追加] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
次に、プロジェクトをビルドします。
スキーマ プロジェクトをビルドするには
ソリューション エクスプローラで、[MySchemaProject] ノードを右クリックし、[ビルド] をクリックします。
メモ : プロジェクトをビルドして、この後の手順でプロジェクトに定義されたスキーマへの参照を解決できるようにする必要があります。
次に、Person スキーマ内のテーブル用のプロジェクトを作成します。
テーブル用のデータベース プロジェクトを作成する
ソース データベース プロジェクトを作成するには
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] ボックスの一覧の [データベース プロジェクト] ノードを展開し、[SQL Server 2005] をクリックします。
メモ : ターゲット データベースに異なるバージョンの SQL Server がある場合は、その SQL Server のバージョンに対応するプロジェクトの種類をクリックできます。
[テンプレート] ボックスの一覧の [SQL Server 2005 データベース プロジェクト] をクリックします。
[名前] ボックスに「MyTablesProject」と入力します。
[場所] ボックスで、データベース プロジェクトを作成するパスを入力するか参照し、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラに表示されます。
次に、テーブル プロジェクトにテーブルを定義する前に、スキーマ プロジェクトへの参照を追加します。
スキーマ プロジェクトへの参照を追加するには
ソリューション エクスプローラで、[MyTablesProject] ノードを展開し、[参照] ノードを右クリックし、[データベース参照の追加] をクリックします。
[データベース参照の追加] ダイアログ ボックスが開きます。
[データベース参照] で、[現在のソリューションのデータベース プロジェクト] が指定されていることを確認します。
メモ : このソリューションに参照先のプロジェクトが含まれていない場合は、[データベース プロジェクト スキーマ (.dbschema)] を代わりにクリックできます。 この方法は、たとえばストアド プロシージャを開発しているチーム メンバがスキーマまたはテーブル プロジェクトを間違って変更することを防止するために使用できます。
[MySchemaProject] をクリックします。
重要 : 複合プロジェクトに参照を定義するときは、サーバー変数と値、またはデータベース変数と値は指定しないでください。 変数が定義されないため、参照されるプロジェクトは現在のプロジェクトのターゲット サーバーとデータベースを共有していると見なされます。
[OK] をクリックします。
次に、新しいスキーマに 2 つのテーブルを作成します。
Person スキーマのテーブルを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューで、[MyTablesProject] ノードを展開し、[スキーマ] ノードを展開します。次に、[Person] ノードを右クリックし、[追加] をポイントし、[テーブル] をクリックします。
メモ : このチュートリアルを簡単にするために、テーブル定義は更新しません。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに「Contacts」と入力します。
[Person] ノードを右クリックし、[追加] をポイントして、[テーブル] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに「StateProvince」と入力します。
次に、データベース プロジェクトをビルドします。
テーブル プロジェクトをビルドするには
ソリューション エクスプローラで、[MyTablesProject] ノードを右クリックし、[ビルド] をクリックします。
次に、ストアド プロシージャ用の第 3 のデータベース プロジェクトを作成します。
ストアド プロシージャ用のデータベース プロジェクトを作成する
ストアド プロシージャ用のデータベース プロジェクトを作成するには
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] ボックスの一覧の [データベース プロジェクト] ノードを展開し、[SQL Server 2005] をクリックします。
メモ : ターゲット データベースに異なるバージョンの SQL Server がある場合は、そのバージョンに対応するプロジェクトの種類をクリックできます。
[テンプレート] ボックスの一覧の [SQL Server 2005 データベース プロジェクト] をクリックします。
[名前] ボックスに「MySprocProject」と入力します。
[場所] ボックスで、データベース プロジェクトを作成するパスを入力するか参照して、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラに表示されます。
次に、スキーマ プロジェクトを参照するようにストアド プロシージャ プロジェクトを変更します。
スキーマ プロジェクトへの参照を追加するには
ソリューション エクスプローラで、[MySprocProject] ノードを展開し、[参照] ノードを右クリックし、[データベース参照の追加] をクリックします。
[データベース参照の追加] ダイアログ ボックスが開きます。
[データベース参照] で、[現在のソリューションのデータベース プロジェクト] が指定されていることを確認します。
[MySchemaProject] をクリックします。
重要 : 複合プロジェクトに参照を定義するときは、サーバー変数と値、またはデータベース変数と値は指定しないでください。 変数を定義しないので、参照先のすべてのプロジェクトは、同じターゲット サーバーとデータベースに配置されます。
[OK] をクリックします。
次に、MyTablesProject プロジェクトを参照するようにストアド プロシージャ プロジェクトを変更します。
テーブル プロジェクトへの参照を追加するには
ソリューション エクスプローラで、[MySprocProject] ノードの下にある [参照] ノードを右クリックし、[データベース参照の追加] をクリックします。
[データベース参照の追加] ダイアログ ボックスが開きます。
[データベース参照] で、[現在のソリューションのデータベース プロジェクト] が指定されていることを確認します。
[MyTablesProject] をクリックします。
重要 : 複合プロジェクトに参照を定義するときは、サーバー変数と値、またはデータベース変数と値は指定しないでください。 変数を定義しないので、参照先のすべてのプロジェクトは、同じターゲット サーバーとデータベースに配置されます。
[OK] をクリックします。
次に、スキーマに 2 つのテーブルを作成します。
Person スキーマ内のテーブルを参照するストアド プロシージャを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューで、[MySprocProject] ノードを展開し、[スキーマ] ノードを展開します。次に、[Person] ノードを右クリックし、[追加] をポイントし、[ストアド プロシージャ] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[名前] ボックスに「uspCountContacts」と入力し、[追加] をクリックします。
ストアド プロシージャがプロジェクトに追加され、Transact-SQL (T-SQL) エディタに表示されます。
T-SQL エディタで、プロシージャを次のように更新します。
CREATE PROCEDURE [Person].[uspCountContacts] AS SELECT COUNT(*) FROM [Person].[Contacts]
[ファイル] メニューの [すべてを保存] をクリックします。
次に、MySprocProject とその依存関係を構成、ビルド、および配置します。
データベースを構成、ビルド、および配置する
MySchemaProject を配置するために構成するには
ソリューション エクスプローラで、[MySchemaProject] ノードを右クリックし、[プロパティ] をクリックします。
[プロパティ] ページで [配置] タブをクリックします。
[配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
[ターゲット データベースの設定] の横にある [編集] をクリックします。
このデータベース プロジェクトを配置するターゲット サーバーへの接続を指定し、[OK] をクリックします。
[ターゲット データベース名] ボックスに「MySprocProject」と入力します。
重要 : 複合プロジェクトを構成する 3 つのすべてのプロジェクトに対して同一のターゲット データベース名を指定する必要があります。そうしないと、配置は失敗します。
[ファイル] メニューの [すべてを保存] をクリックします。
MyTablesProject のプロパティを構成します。
MyTablesProject を配置用に構成するには
ソリューション エクスプローラで、[MyTablesProject] ノードを右クリックし、[プロパティ] をクリックします。
[プロパティ] ページで [配置] タブをクリックします。
[配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
[ターゲット データベースの設定] の横にある [編集] をクリックします。
このデータベース プロジェクトを配置するターゲット サーバーへの接続を指定し、[OK] をクリックします。
[ターゲット データベース名] ボックスに「MySprocProject」と入力します。
重要 : 複合プロジェクトを構成する 3 つのすべてのプロジェクトに対して同一のターゲット データベース名を指定する必要があります。そうしないと、配置は失敗します。
[ファイル] メニューの [すべてを保存] をクリックします。
次に、MySprocProject のプロパティを構成します。
MySprocProject を配置用に構成するには
ソリューション エクスプローラで、[MySprocProject] ノードを右クリックし、[プロパティ] をクリックします。
[プロパティ] ページで [配置] タブをクリックします。
[配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
[ターゲット データベースの設定] の横にある [編集] をクリックします。
このデータベース プロジェクトを配置するターゲット サーバーへの接続を指定し、[OK] をクリックします。
[ターゲット データベース名] ボックスに「MySprocProject」と入力します。
重要 : 複合プロジェクトを構成する 3 つのすべてのプロジェクトに対して同一のターゲット データベース名を指定する必要があります。そうしないと、配置は失敗します。
[ファイル] メニューの [すべてを保存] をクリックします。
次に、データベース プロジェクトをビルドします。
開発データベースをビルドおよび配置するには
ソリューション エクスプローラで、[MySprocProject] ノードを右クリックし、[ビルド] をクリックします。
ソリューション エクスプローラで [MySprocProject] ノードを右クリックし、[配置] をクリックします。
データベースがビルドされ、その依存関係と共に指定したターゲット サーバーに配置されます。
次の手順
この方法を使用すると、データベースのもっと小さい複数のセクションを同時に扱うこともできます。 また、ストアド プロシージャを扱う開発者をテーブルとスキーマの定義から分離する場合は、データベース プロジェクトの代わりに .dbschema ファイルを参照できます。