チュートリアル : 共有ログインを参照するデータベース プロジェクトの作成と配置
複数のデータベースが同じサーバー オブジェクトを参照する場合は、データベースごとにプロジェクトを作成し、共有ログイン、キー、カスタム エラー メッセージなどのオブジェクトをインポートするサーバー プロジェクトを作成します。 このチュートリアルでは、サーバー プロジェクトにインポートする共有ログインを参照するデータベース用の分離開発環境を設定します。 この環境は、データベース プロジェクトに基づいています。データベース プロジェクトには、運用データベース内のすべてのオブジェクトの定義が格納されています。
このチュートリアルでは、次のタスクについて説明します。
共有サーバー プロジェクトの定義
複合データベース プロジェクトの作成
チームでのプロジェクトの利用 (省略可能)
前提条件
Visual Studio Team System Database Edition がインストールされており、サーバー オブジェクトのインポート元となる SQL Server のコピーに対するアクセスを持っている必要があります。 その SQL Server のコピーは、データベース プロジェクトを配置できるサーバー上で実行している必要があります。
共有サーバー プロジェクトの定義
開発環境で共有ログインを参照する場合、通常それらのログインは、既に存在し、サーバー管理者が保守しているサーバー プロジェクトに定義されます。
サーバー プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] の [データベース プロジェクト] ノードを展開し、[SQL Server 2005] をクリックします。
[テンプレート] ボックスの一覧の [SQL Server 2005 サーバー プロジェクト] をクリックします。
[名前] に「SharedServerProject」と入力します。
[場所] と [ソリューション名] の値を変更する必要はありません。
[ソリューションのディレクトリを作成] チェック ボックスがまだオンでない場合は、オンにします。
[ソース管理に追加] チェック ボックスがまだオフになっていない場合はオフにし、[OK] をクリックします。
空のサーバー プロジェクトがソリューションに追加され、ソリューション エクスプローラに表示されます。 次に、サーバー オブジェクトと設定をインポートします。
サーバー オブジェクトと設定をインポートするには
ソリューション エクスプローラで、SharedServerProject プロジェクトをクリックします。
[プロジェクト] メニューの [オブジェクトと設定のインポート] をクリックします。
メモ : 手順 1. と 2. の代わりに、SharedServerProject を右クリックし、[オブジェクトと設定のインポート] をクリックすることもできます。
データベースのインポート ウィザードで、オブジェクトおよび設定のインポート元にするサーバーへの接続を指定して、[開始] をクリックします。
重要 : このチュートリアルでは、データベース プロジェクトの配置先と同じサーバーを指定する必要があります。
サーバーのオブジェクトと設定がプロジェクトにインポートされます。
オブジェクトと設定がインポートされたら、[完了] をクリックします。
[表示] メニューの [スキーマ ビュー] をクリックします。
[SharedServerProject] ノード、[サーバー レベル オブジェクト] ノード、[セキュリティ] ノード、[ログイン] ノードの順に展開します。
このチュートリアルの後半で使用するために、表示されるすべてのログインを識別して書き留めておきます。
次に、サーバー プロジェクトをビルドします。
サーバー プロジェクトをビルドするには
[ビルド] メニューの [ソリューションのビルド] をクリックします。
ソリューションをビルドする場合、SharedServerProject.dbschema ファイルを作成し、サーバー プロジェクトのオブジェクトと設定の定義を格納します。 このファイルは、チュートリアルの後半で参照します。
次に、このサーバー プロジェクトに定義されているログインを使用する、データベース プロジェクトを作成します。
複合データベース プロジェクトの作成
データベース プロジェクトを作成するには
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[プロジェクトの種類] の [データベース プロジェクト] ノードを展開し、[Microsoft SQL Server] をクリックします。
[テンプレート] ボックスの一覧の [SQL Server 2005 データベース プロジェクト] をクリックします。
[名前] に「CompositeDBProject」と入力します。
[場所] と [ソリューション名] の値を変更する必要はありません。
[ソリューションのディレクトリを作成] チェック ボックスがまだオンでない場合は、オンにします。
[ソース管理に追加] チェック ボックスがまだオフになっていない場合はオフにし、[OK] をクリックします。
空のデータベース プロジェクトがソリューションに追加され、ソリューション エクスプローラに表示されます。
次に、このチュートリアルの前半で定義したサーバー プロジェクトから出力に参照を追加します。
サーバー プロジェクトに参照を追加するには
ソリューション エクスプローラで、CompositeDBProject プロジェクトのノードを展開し、[参照設定] ノードをクリックします。
[プロジェクト] メニューの [データベース参照の追加] をクリックします。
メモ : 手順 1. と 2. の代わりに、[参照設定] ノードを右クリックし、[データベース参照の追加] をクリックすることもできます。
[データベース参照の追加] ダイアログ ボックスが表示されます。 ソリューションにはデータベース プロジェクトが 1 つのみ含まれるので、[データベース プロジェクト スキーマ (.dbschema)] が選択されています。
[参照] をクリックします。
[データベース ファイルの選択] ダイアログ ボックスが表示されます。
このチュートリアルの前半で作成した SharedServerProject.dbschema ファイルを指定します。
たとえば、次の場所を指定します。
My Documents\Visual Studio 2008\Projects\SharedServerProject\SharedServerProject\sql\debug\SharedServerProject.dbschema
[開く] をクリックします。
常にデータベース プロジェクトと同じサーバー上にあるオブジェクトを参照するので、サーバー変数およびデータベース変数は定義しません。 サーバー変数とデータベース変数を定義せずにデータベース参照を追加するときは、複合プロジェクトを作成します。
[OK] をクリックします。
参照がサーバー プロジェクトに追加されます。 これで、そのサーバー プロジェクトに定義されたオブジェクトを、現在のデータベース プロジェクトに定義されている場合と同じように使用できます。
次に、ユーザー オブジェクトをデータベース プロジェクトに追加します。 ユーザー オブジェクトは、サーバー プロジェクトに定義されたログインを使用します。
ユーザーをデータベース プロジェクトに追加するには
[表示] メニューの [スキーマ ビュー] をクリックします。
[CompositeDBProject] ノードを展開し、[セキュリティ] ノードを展開します。次に、[ユーザー] ノードを右クリックし、[追加] をクリックして、[ユーザー] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[名前] に「MyUser」と入力し、[追加] をクリックします。
ユーザーがデータベース プロジェクトに追加され、スキーマ ビューに表示されます。 Transact-SQL (T-SQL) エディタが開き、ユーザーの定義が表示されます。
T-SQL エディタで、次の例に示すようにユーザーの定義を更新します。
CREATE USER [MyUser] FOR LOGIN [SharedLogin] WITH DEFAULT_SCHEMA = dbo;
重要 : [SharedLogin] は、「サーバー オブジェクトと設定をインポートするには」という見出しの手順 6. で識別したログインに置き換える必要があります。
[ファイル] メニューの [MyUser.user.sql の保存] をクリックします。
次に、データベース ロールを定義します。
データベース ロールを定義するには
スキーマ ビューで、[CompositeDBProject] ノードを展開し、[セキュリティ] ノードを展開し、[ロール] ノードを展開します。
[データベース ロール] ノードを右クリックし、[追加] をポイントして、[データベース ロール] をクリックします。
[新しい項目の追加] ダイアログ ボックスが表示されます。
[名前] に「DbAccounting」と入力し、[追加] をクリックします。
ロールがデータベース プロジェクトに追加され、スキーマ ビューに表示されます。 Transact-SQL (T-SQL) エディタが開き、ロールの定義が表示されます。
[ファイル] メニューの [DbAccounting.role.sql の保存] をクリックします。
次に、データベース プロジェクトの配置プロパティを構成します。
ユーザーを新しいデータベース ロールに関連付けるには
[スクリプト] ノードを展開し、[配置後] ノードを展開して、[Script.PostDeployment.sql] をダブルクリックします。
T-SQL エディタが開き、配置後スクリプトが表示されます。
配置後スクリプトの下部に、次の T-SQL ステートメントを追加します。
exec sp_addrolemember 'DbAccounting','MyUser';
[ファイル] メニューの [Script.PostDeployment.sql の保存] をクリックします。
次に、データベース プロジェクトの配置プロパティを構成します。
データベース プロジェクトを配置用に構成するには
ソリューション エクスプローラで、[CompositeDBProject] (データベース プロジェクト) をクリックします。
[プロジェクト] メニューの [CompositeDBProject のプロパティ] をクリックします。
プロジェクトのプロパティが表示されます。
[配置] タブをクリックします。
[配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。
[ターゲット データベースの設定] の [編集] をクリックし、データベース プロジェクトの配置先となるサーバーおよびデータベースへの接続を指定します。
メモ : サーバー オブジェクトのインポート元と同じサーバーを指定しない場合は、ログインがそのサーバーに定義されているので、配置に失敗します。
[ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。
次に、データベース プロジェクトをビルドします。
データベース プロジェクトをビルドするには
[ビルド] メニューの [ソリューションのビルド] をクリックします。
プロジェクトがエラーを発生することなくビルドされます。
次に、データベース プロジェクトをターゲット サーバーとデータベースに配置します。
データベース プロジェクトを配置するには
[ビルド] メニューの [CompositeDBProject の配置] をクリックします。
プロジェクトがエラーを発生することなく配置されます。
チームでのプロジェクトの利用 (省略可能)
プロジェクトをバージョン管理に追加するには
ソリューション エクスプローラで、CompositeDBProject ソリューションのノードをクリックします。
[ファイル] メニューの [ソース管理] をポイントし、[ソリューションをソース管理に追加] をクリックします。
メモ : |
---|
ここで、インストール済みのバージョン管理ソフトウェアを使用して操作します。このチュートリアルでは、Visual Studio Team System Team Foundation Server にプロジェクトを追加する手順について説明します。 他のバージョン管理ソフトウェアがインストールされている場合は、同等の手順を実行してください。 |
Team Foundation Server を使用している場合は、[Team Foundation Server に接続] ダイアログ ボックスが表示されます。
次の手順
データベース プロジェクトをバージョン管理にチェックインすると、チーム メンバは引き続きデータベース プロジェクトを開発できます。 データベース開発者は、サーバー プロジェクトを変更する必要はありません。 そのため、彼らが共有オブジェクトを表示できても変更はできないように、アクセス許可を制限できます。
参照
概念
共有サーバー オブジェクトを参照するデータベースのチーム開発の開始
SQLCLR オブジェクトを参照するデータベースのチーム開発の開始
その他の技術情報
シナリオ : データベース サーバー上のオブジェクトのチーム開発の開始
シナリオ : データベース サーバー エンドポイントのチーム開発の開始