チュートリアル: 部分プロジェクトを使用したデータベース プロジェクトのパーティション分割
部分プロジェクトを使用すると、データベース プロジェクトの特定のオブジェクトごとに開発を分割できます。 データベースを部分プロジェクトに分割して、インポートされた部分プロジェクト内のオブジェクトに対してバージョン コントロール アクセスを制限することにより、更新してはならないデータベース プロジェクトの一部を、ユーザーが誤って変更するのを防ぐことができます。
任意のオブジェクトまたはオブジェクトのグループを部分プロジェクトとしてエクスポートできます。 たとえば、スキーマ定義およびその内容をエクスポートできます。 また、オブジェクトの種類別にオブジェクトをエクスポートし、1 つのプロジェクトや別のビューなどに複数のテーブルを配置することもできます。
このチュートリアルでは、次の手順を行います。
データベースの 1 つのスキーマと 2 つのテーブルの定義が含まれたソース データベース プロジェクトを作成する
オブジェクトを部分プロジェクトとしてエクスポートする
開発データベース プロジェクトを作成する
部分プロジェクトのオブジェクトを開発プロジェクトにインポートする
インポートしたオブジェクトを参照するストアド プロシージャを定義する
開発プロジェクトを構成、ビルド、および配置する
必須コンポーネント
Visual Studio がインストールされていて、SQL Server を実行しているサーバーに対する書き込みアクセス権を持っている必要があります。
ソース データベース プロジェクトとそのオブジェクトを作成する
スキーマとテーブルが含まれたデータベース プロジェクトが既にある場合は、チュートリアルのこの手順で作成するプロジェクトの代わりにそれを使用できます。
ソース データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] をクリックします。
注意
Visual Studio Professional を使用している場合、[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] ノードを展開します。次に、[詳細設定] をクリックします。
テンプレートの一覧の [SQL Server 2008 データベース プロジェクト] をクリックします。
注意
配置先データベースの SQL Server のバージョンが異なる場合は、SQL Server のバージョンに一致するプロジェクトの種類を指定できます。
[名前] ボックスに、「MySourceDatabase」と入力します。
[場所] ボックスで、データベース プロジェクトを作成する場所のパスを入力するか参照して選択し、[OK] をクリックします。
重要
パスが長すぎると、このチュートリアルの後半で部分プロジェクトをインポートするときにエラーが発生することがあります。 このエラーの発生を防ぐために、短いパスを使用してください。
データベース プロジェクトが作成され、ソリューション エクスプローラーに表示されます。
次に、スキーマおよびそのスキーマのテーブルを定義します。
スキーマを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
[MySourceDatabase] ノードを展開し、[スキーマ] ノードを展開します。次に、[スキーマ] ノードを右クリックし、[追加] をポイントして、[スキーマ] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [スキーマ] をクリックします。
[名前] ボックスに、「Person」と入力し、[追加] をクリックします。
次に、新しいスキーマのテーブルを作成します。
Person スキーマのテーブルを定義するには
スキーマ ビューで、[Person] ノードを右クリックし、[追加] をポイントします。次に、[テーブル] をクリックします。
注意
このチュートリアルの手順を簡潔にするために、テーブルの定義は更新しないでください。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに、「Contacts」と入力し、[追加] をクリックします。
[Person] ノードを右クリックし、[追加] をポイントします。次に、[テーブル] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[テンプレート] ボックスの一覧の [テーブル] をクリックします。
[名前] ボックスに、「StateProvince」と入力し、[追加] をクリックします。
次に、Person スキーマとそのオブジェクトをエクスポートします。
オブジェクトを部分プロジェクトとしてエクスポートする
オブジェクトを部分プロジェクトとしてエクスポートするには
ソリューション エクスプローラーで、[スキーマ オブジェクト] ノードを展開し、[スキーマ] ノードを展開します。
[Person] ノードが表示されます。
[データベース レベル オブジェクト] ノードを展開し、[セキュリティ] ノードを展開します。次に、[スキーマ] ノードを展開します。
Person.schema.sql ファイルが表示されます。
[Person] ノードを右クリックし、[部分プロジェクトとしてエクスポート] をクリックします。
[名前を付けて保存] ダイアログ ボックスが表示されます。
[ファイル名] ボックスに「ExportedPersonSchema」と入力し、[保存] をクリックします。
部分プロジェクトを保存したフォルダーを書き留めます。
[ファイル] メニューの [ソリューションを閉じる] をクリックします。 変更をソリューションに保存するかどうかを確認するメッセージが表示されたら、[はい] をクリックします。
次に、Person スキーマのテーブルを参照するストアド プロシージャを開発するプロジェクトを作成します。
開発データベース プロジェクトを作成する
開発データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] をクリックします。
注意
Visual Studio Professional を使用している場合、[インストールされたテンプレート] で、[データベース] ノードを展開し、[SQL Server] ノードを展開します。次に、[詳細設定] をクリックします。
テンプレートの一覧の [SQL Server 2008 データベース プロジェクト] をクリックします。
注意
配置先データベースの SQL Server のバージョンが異なる場合は、SQL Server のバージョンに一致するプロジェクトの種類を指定できます。
[名前] ボックスに、「MyDevelopmentDatabase」と入力します。
[場所] ボックスで、データベース プロジェクトを作成する場所のパスを入力するか参照して選択し、[OK] をクリックします。
データベース プロジェクトが作成され、ソリューション エクスプローラーに表示されます。
次に、前の手順でエクスポートした部分プロジェクトをインポートします。
部分プロジェクトのオブジェクトをインポートする
部分プロジェクトをインポートするには
ソリューション エクスプローラーで、[MyDevelopmentDatabase] プロジェクト ノードを右クリックし、[部分プロジェクトのインポート] をクリックします。
確認のダイアログ ボックスの [はい] をクリックします。
[開く] ダイアログ ボックスで、MySourceDatabase からエクスポートした部分プロジェクトがあるフォルダーに移動します。
ExportedPersonSchema.files ファイルをクリックし、[開く] をクリックします。
プロジェクトがアンロードされて再度読み込まれ、MySourceDatabaseBasePath という名前のフォルダーがソリューション エクスプローラーに表示されます。
[MySourceDatabaseBasePath] フォルダーを展開します。
このフォルダーには、ソース データベースからエクスポートしたファイルが格納されています。
次に、Person スキーマに定義したテーブルを参照するストアド プロシージャを定義します。
インポートしたオブジェクトを参照するストアド プロシージャを定義する
簡単なストアド プロシージャを定義するには
[表示] メニューの [スキーマ ビュー] をクリックします。
[スキーマ ビュー] で、[MyDevelopmentDatabase] ノードを展開し、[スキーマ] ノードを展開します。
[Person] ノードを右クリックし、[追加] をポイントします。次に、[ストアド プロシージャ] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[名前] ボックスに「uspCountContacts」と入力し、[追加] をクリックします。
ストアド プロシージャがプロジェクトに追加され、Transact-SQL エディターに表示されます。
Transact-SQL エディターで、コードを次のように変更します。
CREATE PROCEDURE [Person].[uspCountContacts] AS SELECT COUNT(*) FROM [Person].[Contacts]
[ファイル] メニューの [すべてを保存] をクリックします。
次に、開発データベース プロジェクトを構成し、それをビルドして、対象のデータベースに配置します。
開発プロジェクトを構成、ビルド、および配置する
開発データベースを構成、ビルド、および配置するには
ソリューション エクスプローラーで、[MyDevelopmentDatabase] ノードを右クリックし、[プロパティ] をクリックします。
[プロパティ] ページの [配置] タブをクリックします。
[配置動作] ボックスの一覧の、[配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
[ターゲット データベースの設定] の下の [編集] をクリックします。
このプロジェクトを配置するサーバーへの接続を指定し、[OK] をクリックします。
[ファイル] メニューの [すべてを保存] をクリックします。
ソリューション エクスプローラーで、[MyDevelopmentDatabase] ノードを右クリックし、[ビルド] をクリックします。
ソリューション エクスプローラーで、[MyDevelopmentDatabase] ノードを右クリックし、[配置] をクリックします。
指定したサーバーにデータベースが配置されます。
次の手順
配置対象には、Person スキーマ、そのスキーマに定義したテーブル、およびストアド プロシージャが含まれます。 ここで、プロジェクトをバージョン コントロールに追加し、アクセス許可を設定して、開発者のみがストアド プロシージャの定義を変更できるように制限できます。