チュートリアル : 共有ログインを参照するデータベース プロジェクトの作成と配置

複数のデータベースが同じサーバー オブジェクトを参照する場合は、データベースごとにプロジェクトを作成し、共有ログイン、キー、カスタム エラー メッセージなどのオブジェクトをインポートするサーバー プロジェクトを作成します。 このチュートリアルでは、サーバー プロジェクトにインポートする共有ログインを参照するデータベース用の分離開発環境を設定します。 この環境は、データベース プロジェクトに基づいています。データベース プロジェクトには、運用データベース内のすべてのオブジェクトの定義が格納されています。

このチュートリアルでは、次のタスクについて説明します。

  • 共有サーバー プロジェクトの定義

  • 複合データベース プロジェクトの作成

  • チームでのプロジェクトの利用 (省略可能)

前提条件

Visual Studio Team System Database Edition がインストールされており、サーバー オブジェクトのインポート元となる SQL Server のコピーに対するアクセスを持っている必要があります。 その SQL Server のコピーは、データベース プロジェクトを配置できるサーバー上で実行している必要があります。

共有サーバー プロジェクトの定義

開発環境で共有ログインを参照する場合、通常それらのログインは、既に存在し、サーバー管理者が保守しているサーバー プロジェクトに定義されます。

サーバー プロジェクトを作成するには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [プロジェクトの種類] の [データベース プロジェクト] ノードを展開し、[SQL Server 2005] をクリックします。

  3. [テンプレート] ボックスの一覧の [SQL Server 2005 サーバー プロジェクト] をクリックします。

  4. [名前] に「SharedServerProject」と入力します。

    [場所] と [ソリューション名] の値を変更する必要はありません。

  5. [ソリューションのディレクトリを作成] チェック ボックスがまだオンでない場合は、オンにします。

  6. [ソース管理に追加] チェック ボックスがまだオフになっていない場合はオフにし、[OK] をクリックします。

    空のサーバー プロジェクトがソリューションに追加され、ソリューション エクスプローラに表示されます。 次に、サーバー オブジェクトと設定をインポートします。

サーバー オブジェクトと設定をインポートするには

  1. ソリューション エクスプローラで、SharedServerProject プロジェクトをクリックします。

  2. [プロジェクト] メニューの [オブジェクトと設定のインポート] をクリックします。

    Dd193268.alert_note(ja-jp,VS.90).gifメモ :

    手順 1. と 2. の代わりに、SharedServerProject を右クリックし、[オブジェクトと設定のインポート] をクリックすることもできます。

  3. データベースのインポート ウィザードで、オブジェクトおよび設定のインポート元にするサーバーへの接続を指定して、[開始] をクリックします。

    Dd193268.alert_caution(ja-jp,VS.90).gif重要 :

    このチュートリアルでは、データベース プロジェクトの配置先と同じサーバーを指定する必要があります。

    サーバーのオブジェクトと設定がプロジェクトにインポートされます。

  4. オブジェクトと設定がインポートされたら、[完了] をクリックします。

  5. [表示] メニューの [スキーマ ビュー] をクリックします。

  6. [SharedServerProject] ノード、[サーバー レベル オブジェクト] ノード、[セキュリティ] ノード、[ログイン] ノードの順に展開します。

  7. このチュートリアルの後半で使用するために、表示されるすべてのログインを識別して書き留めておきます。

    次に、サーバー プロジェクトをビルドします。

サーバー プロジェクトをビルドするには

  • [ビルド] メニューの [ソリューションのビルド] をクリックします。

    ソリューションをビルドする場合、SharedServerProject.dbschema ファイルを作成し、サーバー プロジェクトのオブジェクトと設定の定義を格納します。 このファイルは、チュートリアルの後半で参照します。

    次に、このサーバー プロジェクトに定義されているログインを使用する、データベース プロジェクトを作成します。

複合データベース プロジェクトの作成

データベース プロジェクトを作成するには

  1. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。

    [新しいプロジェクト] ダイアログ ボックスが表示されます。

  2. [プロジェクトの種類] の [データベース プロジェクト] ノードを展開し、[Microsoft SQL Server] をクリックします。

  3. [テンプレート] ボックスの一覧の [SQL Server 2005 データベース プロジェクト] をクリックします。

  4. [名前] に「CompositeDBProject」と入力します。

    [場所] と [ソリューション名] の値を変更する必要はありません。

  5. [ソリューションのディレクトリを作成] チェック ボックスがまだオンでない場合は、オンにします。

  6. [ソース管理に追加] チェック ボックスがまだオフになっていない場合はオフにし、[OK] をクリックします。

    空のデータベース プロジェクトがソリューションに追加され、ソリューション エクスプローラに表示されます。

    次に、このチュートリアルの前半で定義したサーバー プロジェクトから出力に参照を追加します。

サーバー プロジェクトに参照を追加するには

  1. ソリューション エクスプローラで、CompositeDBProject プロジェクトのノードを展開し、[参照設定] ノードをクリックします。

  2. [プロジェクト] メニューの [データベース参照の追加] をクリックします。

    Dd193268.alert_note(ja-jp,VS.90).gifメモ :

    手順 1. と 2. の代わりに、[参照設定] ノードを右クリックし、[データベース参照の追加] をクリックすることもできます。

    [データベース参照の追加] ダイアログ ボックスが表示されます。 ソリューションにはデータベース プロジェクトが 1 つのみ含まれるので、[データベース プロジェクト スキーマ (.dbschema)] が選択されています。

  3. [参照] をクリックします。

    [データベース ファイルの選択] ダイアログ ボックスが表示されます。

  4. このチュートリアルの前半で作成した SharedServerProject.dbschema ファイルを指定します。

    たとえば、次の場所を指定します。

    My Documents\Visual Studio 2008\Projects\SharedServerProject\SharedServerProject\sql\debug\SharedServerProject.dbschema

  5. [開く] をクリックします。

    常にデータベース プロジェクトと同じサーバー上にあるオブジェクトを参照するので、サーバー変数およびデータベース変数は定義しません。 サーバー変数とデータベース変数を定義せずにデータベース参照を追加するときは、複合プロジェクトを作成します。

  6. [OK] をクリックします。

    参照がサーバー プロジェクトに追加されます。 これで、そのサーバー プロジェクトに定義されたオブジェクトを、現在のデータベース プロジェクトに定義されている場合と同じように使用できます。

    次に、ユーザー オブジェクトをデータベース プロジェクトに追加します。 ユーザー オブジェクトは、サーバー プロジェクトに定義されたログインを使用します。

ユーザーをデータベース プロジェクトに追加するには

  1. [表示] メニューの [スキーマ ビュー] をクリックします。

  2. [CompositeDBProject] ノードを展開し、[セキュリティ] ノードを展開します。次に、[ユーザー] ノードを右クリックし、[追加] をクリックして、[ユーザー] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [名前] に「MyUser」と入力し、[追加] をクリックします。

    ユーザーがデータベース プロジェクトに追加され、スキーマ ビューに表示されます。 Transact-SQL (T-SQL) エディタが開き、ユーザーの定義が表示されます。

  4. T-SQL エディタで、次の例に示すようにユーザーの定義を更新します。

    CREATE USER [MyUser]
        FOR LOGIN [SharedLogin]
        WITH DEFAULT_SCHEMA = dbo;
    
    Dd193268.alert_caution(ja-jp,VS.90).gif重要 :

    [SharedLogin] は、「サーバー オブジェクトと設定をインポートするには」という見出しの手順 6. で識別したログインに置き換える必要があります。

  5. [ファイル] メニューの [MyUser.user.sql の保存] をクリックします。

    次に、データベース ロールを定義します。

データベース ロールを定義するには

  1. スキーマ ビューで、[CompositeDBProject] ノードを展開し、[セキュリティ] ノードを展開し、[ロール] ノードを展開します。

  2. [データベース ロール] ノードを右クリックし、[追加] をポイントして、[データベース ロール] をクリックします。

    [新しい項目の追加] ダイアログ ボックスが表示されます。

  3. [名前] に「DbAccounting」と入力し、[追加] をクリックします。

    ロールがデータベース プロジェクトに追加され、スキーマ ビューに表示されます。 Transact-SQL (T-SQL) エディタが開き、ロールの定義が表示されます。

  4. [ファイル] メニューの [DbAccounting.role.sql の保存] をクリックします。

    次に、データベース プロジェクトの配置プロパティを構成します。

ユーザーを新しいデータベース ロールに関連付けるには

  1. [スクリプト] ノードを展開し、[配置後] ノードを展開して、[Script.PostDeployment.sql] をダブルクリックします。

    T-SQL エディタが開き、配置後スクリプトが表示されます。

  2. 配置後スクリプトの下部に、次の T-SQL ステートメントを追加します。

    exec sp_addrolemember 'DbAccounting','MyUser';
    
  3. [ファイル] メニューの [Script.PostDeployment.sql の保存] をクリックします。

    次に、データベース プロジェクトの配置プロパティを構成します。

データベース プロジェクトを配置用に構成するには

  1. ソリューション エクスプローラで、[CompositeDBProject] (データベース プロジェクト) をクリックします。

  2. [プロジェクト] メニューの [CompositeDBProject のプロパティ] をクリックします。

    プロジェクトのプロパティが表示されます。

  3. [配置] タブをクリックします。

  4. [配置動作] ボックスの一覧の [配置スクリプト (.sql) を作成してデータベースに配置します] をクリックします。

  5. [ターゲット データベースの設定] の [編集] をクリックし、データベース プロジェクトの配置先となるサーバーおよびデータベースへの接続を指定します。

    Dd193268.alert_note(ja-jp,VS.90).gifメモ :

    サーバー オブジェクトのインポート元と同じサーバーを指定しない場合は、ログインがそのサーバーに定義されているので、配置に失敗します。

  6. [ファイル] メニューの [選択されたファイルを上書き保存] をクリックします。

    次に、データベース プロジェクトをビルドします。

データベース プロジェクトをビルドするには

  • [ビルド] メニューの [ソリューションのビルド] をクリックします。

    プロジェクトがエラーを発生することなくビルドされます。

    次に、データベース プロジェクトをターゲット サーバーとデータベースに配置します。

データベース プロジェクトを配置するには

  • [ビルド] メニューの [CompositeDBProject の配置] をクリックします。

    プロジェクトがエラーを発生することなく配置されます。

チームでのプロジェクトの利用 (省略可能)

プロジェクトをバージョン管理に追加するには

  1. ソリューション エクスプローラで、CompositeDBProject ソリューションのノードをクリックします。

  2. [ファイル] メニューの [ソース管理] をポイントし、[ソリューションをソース管理に追加] をクリックします。

Dd193268.alert_note(ja-jp,VS.90).gifメモ :

ここで、インストール済みのバージョン管理ソフトウェアを使用して操作します。このチュートリアルでは、Visual Studio Team System Team Foundation Server にプロジェクトを追加する手順について説明します。 他のバージョン管理ソフトウェアがインストールされている場合は、同等の手順を実行してください。

Team Foundation Server を使用している場合は、[Team Foundation Server に接続] ダイアログ ボックスが表示されます。

次の手順

データベース プロジェクトをバージョン管理にチェックインすると、チーム メンバは引き続きデータベース プロジェクトを開発できます。 データベース開発者は、サーバー プロジェクトを変更する必要はありません。 そのため、彼らが共有オブジェクトを表示できても変更はできないように、アクセス許可を制限できます。

参照

概念

共有サーバー オブジェクトを参照するデータベースのチーム開発の開始

データベース プロジェクトとサーバー プロジェクトの概要

Database Edition の用語の概要

データベースのチーム開発の開始

他のデータベースを参照するデータベースのチーム開発の開始

SQLCLR オブジェクトを参照するデータベースのチーム開発の開始

その他の技術情報

シナリオ : データベース サーバー上のオブジェクトのチーム開発の開始

シナリオ : データベース サーバー エンドポイントのチーム開発の開始