チュートリアル: 複合プロジェクトを使用したデータベース プロジェクトのパーティション分割
複合プロジェクトを使用すると、大規模なデータベースを、一緒に配置される一連の依存データベース プロジェクトにパーティション分割することで、より適切に管理できます。 このチュートリアルでは、次の作業について説明します。
データベース スキーマが定義されるデータベース プロジェクトを作成する
特定のスキーマのテーブルが定義される別のデータベース プロジェクトを作成する
特定のスキーマのストアド プロシージャが定義される 3 つ目のデータベース プロジェクトを作成する
3 つ目のプロジェクトをその依存関係と共に構成、ビルド、および配置する
必須コンポーネント
Visual Studio をインストール済みで、SQL Server を実行しているサーバーに対するアクセス権を持っている必要があります。
スキーマのデータベース プロジェクトを作成する
ソース データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] をクリックします。
注意
Visual Studio Professional を使用している場合、[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] ノードを展開します。次に、[詳細設定] をクリックします。
テンプレートの一覧の [SQL Server 2008 データベース プロジェクト] をクリックします。
注意
対象データベースの SQL Server のバージョンが異なる場合は、ご使用のバージョンに一致するプロジェクトの種類をクリックできます。
[名前] ボックスに「MySchemaProject」と入力します。
[場所] ボックスで、データベース プロジェクトを作成する場所のパスを入力するか参照して選択します。
[ソリューション名] ボックスに「MyCompositeSolution」と入力し、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラーに表示されます。 次に、プロジェクトのスキーマを定義します。
スキーマを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
[MySchemaProject] ノードを展開し、[スキーマ] ノードを展開します。次に、[スキーマ] ノードを右クリックし、[追加] をポイントして、[スキーマ] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [スキーマ] をクリックします。
[名前] ボックスに「Person」と入力し、[追加] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
次に、プロジェクトをビルドします。
スキーマ プロジェクトをビルドするには
ソリューション エクスプローラーで、[MySchemaProject] ノードを右クリックし、[ビルド] をクリックします。
注意
プロジェクトで定義されているスキーマへの参照が後に続く手順で解決されるように、プロジェクトをビルドする必要があります。
次に、Person スキーマのテーブルのプロジェクトを作成します。
テーブルのデータベース プロジェクトを作成する
ソース データベース プロジェクトを作成するには
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] をクリックします。
注意
Visual Studio Professional を使用している場合、[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] ノードを展開します。次に、[詳細設定] をクリックします。
[テンプレート] ボックスの一覧の [SQL Server 2008 データベース プロジェクト] をクリックします。
[名前] ボックスに「MyTablesProject」と入力します。
[場所] ボックスで、データベース プロジェクトを作成する場所のパスを入力するか参照して選択し、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラーに表示されます。
次に、スキーマ プロジェクトへの参照を追加してから、テーブル プロジェクトのテーブルを定義します。
スキーマ プロジェクトへの参照を追加するには
ソリューション エクスプローラーで、[MyTablesProject] ノードを展開し、[参照] ノードを右クリックします。次に、[データベース参照の追加] をクリックします。
[データベース参照の追加] ダイアログ ボックスが表示されます。
[データベース参照] で、[現在のソリューションのデータベース プロジェクト] が指定されていることを確認します。
注意
このソリューションに参照先のプロジェクトが含まれていない場合は、代わりに [データベース プロジェクト スキーマ (.dbschema)] をクリックします。 たとえば、ストアド プロシージャを開発しているチーム メンバーが、スキーマ プロジェクトまたはテーブル プロジェクトを誤って変更しないようにする場合にこの方法を使用します。
[MySchemaProject] をクリックします。
重要
複合プロジェクトの参照を定義する場合、サーバー変数と値、またはデータベース変数と値を指定しないでください。 変数が定義されていないため、参照先プロジェクトは現在のプロジェクトのターゲット サーバーおよびターゲット データベースを共有すると見なされます。
[OK] をクリックします。
次に、新しいスキーマの 2 つのテーブルを作成します。
Person スキーマのテーブルを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューのツール バーで、[外部要素] をクリックします。
Person スキーマが別のプロジェクトで定義されているため、この操作が必要です。
[スキーマ ビュー] で [MyTablesProject] ノードを展開し、[スキーマ] ノードを展開します。次に、[Person] ノードを右クリックし、[追加] をポイントして、[テーブル] をクリックします。
注意
このチュートリアルの手順を簡潔にするために、テーブルの定義は更新しないでください。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに「Contacts」と入力します。
[Person] ノードを右クリックし、[追加] をポイントします。次に、[テーブル] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに「StateProvince」と入力します。
次に、データベース プロジェクトをビルドします。
テーブル プロジェクトをビルドするには
ソリューション エクスプローラーで、[MyTablesProject] ノードを右クリックし、[ビルド] をクリックします。
次に、ストアド プロシージャの 3 つ目のデータベース プロジェクトを作成します。
ストアド プロシージャのデータベース プロジェクトを作成する
ストアド プロシージャのデータベース プロジェクトを作成するには
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] をクリックします。
注意
Visual Studio Professional を使用している場合、[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] ノードを展開します。次に、[詳細設定] をクリックします。
[テンプレート] ボックスの一覧の [SQL Server 2008 データベース プロジェクト] をクリックします。
[名前] ボックスに「MySprocProject」と入力します。
[場所] ボックスで、データベース プロジェクトを作成する場所のパスを入力するか参照して選択し、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラーに表示されます。
次に、ストアド プロシージャ プロジェクトがスキーマ プロジェクトを参照するように変更します。
スキーマ プロジェクトへの参照を追加するには
ソリューション エクスプローラーで、[MySprocProject] ノードを展開し、[参照] ノードを右クリックします。次に、[データベース参照の追加] をクリックします。
[データベース参照の追加] ダイアログ ボックスが表示されます。
[データベース参照] で、[現在のソリューションのデータベース プロジェクト] が指定されていることを確認します。
[MySchemaProject] をクリックします。
重要
複合プロジェクトの参照を定義する場合、サーバー変数と値、またはデータベース変数と値を指定しないでください。 変数が定義されていないため、参照先プロジェクトはすべて、同じターゲット サーバーおよびターゲット データベースに配置されます。
[OK] をクリックします。
次に、ストアド プロシージャ プロジェクトが MyTablesProject プロジェクトを参照するように変更します。
テーブル プロジェクトへの参照を追加するには
ソリューション エクスプローラーで、[MySprocProject] ノードの下の [参照] ノードを右クリックし、[データベース参照の追加] をクリックします。
[データベース参照の追加] ダイアログ ボックスが表示されます。
[データベース参照] で、[現在のソリューションのデータベース プロジェクト] が指定されていることを確認します。
[MyTablesProject] をクリックします。
重要
複合プロジェクトの参照を定義する場合、サーバー変数と値、またはデータベース変数と値を指定しないでください。 変数が定義されていないため、参照先プロジェクトはすべて、同じターゲット サーバーおよびターゲット データベースに配置されます。
[OK] をクリックします。
次に、スキーマでストアド プロシージャを作成します。
Person スキーマのテーブルを参照するストアド プロシージャを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
スキーマ ビューのツール バーで、[外部要素] をクリックします。
Person スキーマが別のプロジェクトで定義されているため、この操作が必要です。
[スキーマ ビュー] で [MySprocProject] ノードを展開し、[スキーマ] ノードを展開します。次に、[Person] ノードを右クリックし、[追加] をポイントして、[ストアド プロシージャ] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[名前] ボックスに「uspCountContacts」と入力し、[追加] をクリックします。
ストアド プロシージャがプロジェクトに追加され、Transact-SQL エディターに表示されます。
Transact-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 ファイルを参照することもできます。