Web 配置発行のデータベース サーバーを構成する

作成者: Jason Lee

このトピックでは、Web デプロイと発行をサポートするように SQL Server 2008 R2 データベース サーバーを構成する方法について説明します。

このトピックで説明するタスクは、すべての展開シナリオに共通しています。Web サーバーが IIS Web 配置ツール (Web 配置) リモート エージェント サービス、Web 配置ハンドラー、またはオフライン展開を使用するように構成されているか、アプリケーションが単一の Web サーバーまたはサーバー ファームで実行されているかは関係ありません。 データベースをデプロイする方法は、セキュリティ要件やその他の考慮事項に応じて変更される可能性があります。 たとえば、サンプル データの有無に関係なくデータベースをデプロイしたり、デプロイ後にユーザー ロール マッピングを手動で構成したりできます。 ただし、データベース サーバーの構成方法は変わりません。

Web デプロイをサポートするようにデータベース サーバーを構成するために、追加の製品やツールをインストールする必要はありません。 データベース サーバーと Web サーバーが異なるマシンで実行されていると仮定すると、次のことが必要になります。

  • SQL SERVERが TCP/IP を使用して通信することを許可します。
  • ファイアウォール経由SQL Serverトラフィックを許可します。
  • Web サーバー コンピューター アカウントにSQL Serverログインを付与します。
  • マシン アカウントログインを必要なデータベース ロールにマップします。
  • デプロイを実行するアカウントに、SQL Serverログインとデータベース作成者のアクセス許可を付与します。
  • 繰り返しデプロイをサポートするには、デプロイ アカウントのログインを db_owner データベース ロールにマップします。

このトピックでは、これらの各手順を実行する方法について説明します。 このトピックのタスクとチュートリアルでは、Windows Server 2008 R2 で実行されている SQL Server 2008 R2 の既定のインスタンスから始めていることを前提としています。 続行する前に、次のことを確認します。

  • Windows Server 2008 R2 Service Pack 1 と使用可能なすべての更新プログラムがインストールされています。
  • サーバーはドメインに参加しています。
  • サーバーには静的 IP アドレスがあります。
  • SQL Server 2008 R2 Service Pack 1 と使用可能なすべての更新プログラムがインストールされています。

SQL Server インスタンスには、データベース エンジン サービス ロールのみを含める必要があります。これは、SQL Serverインストールに自動的に含まれます。 ただし、構成とメンテナンスを容易にするために、 管理ツール - 基本 ツールと 管理ツール - 完全な サーバーロールを含めることをおすすめします。

Note

コンピューターをドメインに参加させる方法の詳細については、「ドメインへの コンピューターの参加」および「ログオン」を参照してください。 静的 IP アドレスの構成の詳細については、「静的 IP アドレスの構成」を参照してください。 SQL Serverのインストールの詳細については、「SQL Server 2008 R2 のインストール」を参照してください。

SQL Serverへのリモート アクセスを有効にする

SQL Serverは、TCP/IP を使用してリモート コンピューターと通信します。 データベース サーバーと Web サーバーが異なるマシン上にある場合は、次の手順を実行する必要があります。

  • SQL SERVERネットワーク設定を構成して、TCP/IP 経由の通信を許可します。
  • ハードウェアまたはソフトウェア ファイアウォールを構成して、SQL Server インスタンスが使用するポートで TCP トラフィック (場合によってはユーザー データグラム プロトコル (UDP) トラフィック) を許可します。

SQL Serverが TCP/IP 経由で通信できるようにするには、SQL Server 構成マネージャーを使用して、SQL Server インスタンスのネットワーク構成を変更します。

SQL SERVERが TCP/IP を使用して通信できるようにするには

  1. [スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft SQL Server 2008 R2] をクリックし、[構成ツール] をクリックし、[SQL Server 構成マネージャー] をクリックします。

  2. ツリー ビュー ウィンドウで、[ネットワーク構成SQL Server展開し、[MSSQLSERVER のプロトコル] をクリックします。

    Note

    SQL Serverの複数のインスタンスをインストールしている場合は、各インスタンスの [インスタンス名]の [プロトコル] 項目が表示されます。 インスタンスごとにネットワーク設定を構成する必要があります。

  3. 詳細ウィンドウで、[ TCP/IP ] 行を右クリックし、[ 有効にする] をクリックします。

    詳細ウィンドウで、[TCP/IP] 行を右クリックし、[有効にする] をクリックします。

  4. [警告] ダイアログ ボックスで、[OK] をクリックします。

    [警告] ダイアログ ボックスで、[OK] をクリックします。

  5. 新しいネットワーク構成が有効になる前に、MSSQLSERVER サービスを再起動する必要があります。 これは、コマンド プロンプト、サービス コンソール、またはSQL Server Management Studioから実行できます。 この手順では、SQL Server Management Studioを使用します。

  6. SQL Server 構成マネージャーを閉じます。

  7. [スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft SQL Server 2008 R2] をクリックし、[SQL Server Management Studio] をクリックします。

  8. [ サーバーへの接続 ] ダイアログ ボックスの [ サーバー名 ] ボックスにデータベース サーバーの名前を入力し、[ 接続] をクリックします。

    [サーバーへの接続] ダイアログ ボックスの [サーバー名] ボックスにデータベース サーバーの名前を入力し、[接続] をクリックします。

  9. [オブジェクト エクスプローラー] ウィンドウで、親サーバー ノード (TESTDB1 など) を右クリックし、[再起動] をクリックします。

    [オブジェクト エクスプローラー] ウィンドウで、親サーバー ノード (TESTDB1 など) を右クリックし、[再起動] をクリックします。

  10. [Microsoft SQL Server Management Studio] ダイアログ ボックスで、[はい] をクリックします。

    [Microsoft SQL Server Management Studio] ダイアログ ボックスで、[はい] をクリックします。

  11. サービスが再起動されたら、SQL Server Management Studioを閉じます。

ファイアウォール経由SQL Serverトラフィックを許可するには、まず、SQL Server インスタンスが使用しているポートを把握する必要があります。 これは、SQL Server インスタンスがどのように作成および構成されたかによって異なります。

  • SQL Serverの既定のインスタンスは、TCP ポート 1433 で要求をリッスン (および応答) します。
  • SQL Serverの名前付きインスタンスは、動的に割り当てられた TCP ポートで要求をリッスン (および応答) します。
  • SQL Server Browser サービスが有効になっている場合、クライアントは UDP ポート 1434 でサービスに対してクエリを実行して、特定のSQL Server インスタンスに使用する TCP ポートを確認できます。 ただし、セキュリティ上の理由から、このサービスは多くの場合無効になっています。

SQL Serverの既定のインスタンスを使用している場合は、トラフィックを許可するようにファイアウォールを構成する必要があります。

Direction ポートから ポートへ ポートの種類
着信 Any 1433 TCP
送信 1433 Any TCP

Note

技術的には、クライアント コンピューターは 1024 ~ 5000 の間でランダムに割り当てられた TCP ポートを使用してSQL Serverと通信し、それに応じてファイアウォール規則を制限できます。 SQL Server ポートとファイアウォールの詳細については、「ファイアウォール経由で SQL と通信するために必要な TCP/IP ポート番号」および「方法: 特定の TCP ポートでリッスンするようにサーバーを構成する (SQL Server 構成マネージャー)」を参照してください。

ほとんどの Windows Server 環境では、データベース サーバーで Windows ファイアウォールを構成する必要があります。 既定では、ルールで明示的に禁止されていない限り、Windows ファイアウォールはすべての送信トラフィックを許可します。 Web サーバーがデータベースに到達できるようにするには、SQL Server インスタンスが使用するポート番号で TCP トラフィックを許可する受信規則を構成する必要があります。 SQL Serverの既定のインスタンスを使用している場合は、次の手順を使用してこの規則を構成できます。

既定のSQL Server インスタンスとの通信を許可するように Windows ファイアウォールを構成するには

  1. データベース サーバーの [スタート ] メニューの [ 管理ツール] をポイントし、[セキュリティが 強化された Windows ファイアウォール] をクリックします。

  2. ツリー ビュー ウィンドウで、[ 受信規則] をクリックします。

    ツリー ビュー ウィンドウで、[受信規則] をクリックします。

  3. [ 操作 ] ウィンドウの [ 受信規則] で、[ 新しい規則] をクリックします。

  4. 新しい受信規則ウィザードの [規則の 種類 ] ページで、[ ポート] を選択し、[ 次へ] をクリックします。

    新しい受信規則ウィザードの [規則の種類] ページで、[ポート] を選択し、[次へ] をクリックします。

  5. [ プロトコルとポート] ページで[ TCP ] が選択されていることを確認し、[ 特定のローカル ポート ] ボックスに 「1433」と入力し、[ 次へ] をクリックします。

    [プロトコルとポート] ページで[TCP] が選択されていることを確認し、[特定のローカル ポート] ボックスに「1433」と入力し、[次へ] をクリックします。

  6. [ アクション ] ページで、[ 接続を許可する] を 選択したままにして、[ 次へ] をクリックします。

  7. [プロファイル] ページで[ドメイン] を選択したまま、[プライベート] ボックスと [パブリック] チェック ボックスをオフにして、[次へ] をクリックします。

    [プロファイル] ページで、[ドメイン] を選択したまま、[プライベート] ボックスと [パブリック] チェック ボックスをオフにして、[次へ] をクリックします。

  8. [名前] ページで、規則にわかりやすい名前を付け (既定のインスタンスSQL Serverネットワーク アクセスなど)、[完了] をクリックします

SQL Server用に Windows ファイアウォールを構成する方法の詳細については、特に標準以外のポートまたは動的ポートを介してSQL Serverと通信する必要がある場合は、「方法: データベース エンジン アクセス用に Windows ファイアウォールを構成する」を参照してください。

ログインとデータベースのアクセス許可を構成する

Web アプリケーションをインターネット インフォメーション サービス (IIS) に展開すると、アプリケーション プールの ID を使用してアプリケーションが実行されます。 ドメイン環境では、アプリケーション プール ID は、実行されているサーバーのマシン アカウントを使用してネットワーク リソースにアクセスします。 マシン アカウントは [ドメイン名]</strong>[machine name]$という形式になります( FABRIKAM\TESTWEB1$ など)。 Web アプリケーションがネットワーク経由でデータベースにアクセスできるようにするには、次の手順を実行する必要があります。

  • Web サーバー コンピューター アカウントのログインを SQL Server インスタンスに追加します。
  • マシン アカウントログインを必要なデータベース ロール (通常 はdb_datareaderdb_datawriter) にマップします。

Web アプリケーションが単一のサーバーではなくサーバー ファームで実行されている場合は、サーバー ファーム内のすべての Web サーバーに対してこれらの手順を繰り返す必要があります。

Note

アプリケーション プール ID とネットワーク リソースへのアクセスの詳細については、「 アプリケーション プール ID」を参照してください。

これらのタスクにはさまざまな方法でアプローチできます。 ログインを作成するには、次のいずれかを行います。

  • Transact-SQL またはSQL Server Management Studioを使用して、データベース サーバーでログインを手動で作成します。
  • Visual Studio の SQL Server 2008 Server プロジェクトを使用して、ログインを作成して展開します。

SQL Server ログインは、データベース レベルのオブジェクトではなくサーバー レベルのオブジェクトであるため、デプロイするデータベースに依存しません。 そのため、任意の時点でログインを作成できます。最も簡単な方法は、データベースのデプロイを開始する前に、データベース サーバーでログインを手動で作成することです。 次の手順を使用して、SQL Server Management Studioにログインを作成できます。

Web サーバー コンピューター アカウントのSQL Server ログインを作成するには

  1. データベース サーバーの [スタート] メニューの [すべてのプログラム] をポイントし、[Microsoft SQL Server 2008 R2] をクリックし、[SQL Server Management Studio] をクリックします。

  2. [ サーバーへの接続 ] ダイアログ ボックスの [ サーバー名 ] ボックスにデータベース サーバーの名前を入力し、[ 接続] をクリックします。

    次の図は、[サーバーへの接続] ダイアログ ボックスの [サーバー名] ボックスにデータベース サーバーの名前を入力し、[接続] をクリックします。

  3. [オブジェクト エクスプローラー] ウィンドウで、[セキュリティ] を右クリックし、[新規] をポイントして、[ログイン] をクリックします。

  4. [ ログイン – 新規 ] ダイアログ ボックスの [ ログイン名 ] ボックスに、Web サーバー コンピューター アカウントの名前 ( FABRIKAM\TESTWEB1$など) を入力します。

    [ログイン – 新規] ダイアログ ボックスの [ログイン名] ボックスに、Web サーバー コンピューター アカウントの名前 (FABRIKAM\TESTWEB1$など) を入力します。

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

この時点で、データベース サーバーは Web 配置発行の準備ができています。 ただし、マシン アカウントログインを必要なデータベース ロールにマップするまで、デプロイするソリューションは機能しません。 データベースをデプロイした後までロールをマップできないため、ログインをデータベース ロールにマッピングするには、より多くの考慮が必要です。 マシン アカウントのログインを必要なデータベース ロールにマップするには、次のいずれかを行います。

  • データベースを初めてデプロイした後、手動でログインにデータベース ロールを割り当てます。
  • デプロイ後スクリプトを使用して、データベース ロールをログインに割り当てます。

ログインとデータベース ロール マッピングの作成の自動化の詳細については、「 Deploying Database Role Memberships to Test Environments」を参照してください。 または、次の手順を使用して、マシン アカウントログインを必要なデータベース ロールに手動でマップすることもできます。 データベースを デプロイするまでは 、この手順を実行できないことに注意してください。

データベース ロールを Web サーバー コンピューター アカウントログインにマップするには

  1. 前と同じようにSQL Server Management Studioを開きます。

  2. [オブジェクト エクスプローラー] ウィンドウで、[セキュリティ] ノードを展開し、[ログイン] ノードを展開し、マシン アカウントログイン (FABRIKAM\TESTWEB1$ など) をダブルクリックします。

    [オブジェクト エクスプローラー] ウィンドウで、[セキュリティ] ノードを展開し、[ログイン] ノードを展開し、マシン アカウントログイン (FABRIKAM\TESTWEB1$ など) をダブルクリックします。

  3. [ ログインのプロパティ ] ダイアログ ボックスで、[ ユーザー マッピング] をクリックします。

  4. [ このログイン にマップされたユーザー ] テーブルで、データベースの名前 ( ContactManager など) を選択します。

  5. [ データベース ロール メンバーシップ for:[データベース名] の 一覧で、必要なアクセス許可を選択します。 Contact Manager サンプル ソリューションの場合は、 db_datareaderとdb_datawriter ロール を選択する 必要があります。

    [データベース ロール メンバーシップ] の [データベース名] ボックスの一覧で、必要なアクセス許可を選択します。Contact Manager サンプル ソリューションの場合は、db_datareaderとdb_datawriterロールを選択する必要があります。

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

多くの場合、データベース ロールを手動でマッピングすることはテスト環境では十分ではありませんが、自動またはワンクリックのデプロイからステージング環境または運用環境に対しては望ましくありません。 デプロイ後スクリプトを使用してこの種のタスクを自動化する方法の詳細については、「 Deploying Database Role Memberships to Test Environments」を参照してください。

Note

サーバー プロジェクトとデータベース プロジェクトの詳細については、「Visual Studio 2010 SQL Server データベース プロジェクト」を参照してください。

デプロイ アカウントのアクセス許可を構成する

デプロイの実行に使用するアカウントがSQL Server管理者ではない場合は、このアカウントのログインも作成する必要があります。 データベースを作成するには、アカウントが dbcreator サーバー ロールのメンバーであるか、同等のアクセス許可を持っている必要があります。

Note

Web 配置または VSDBCMD を使用してデータベースをデプロイする場合は、Windows 資格情報またはSQL Server資格情報を使用できます (SQL Server インスタンスが混合モード認証をサポートするように構成されている場合)。 次の手順では、Windows 資格情報を使用することを前提としていますが、展開を構成するときに接続文字列にSQL Serverユーザー名とパスワードを指定する必要はありません。

デプロイ アカウントのアクセス許可を設定するには

  1. 前と同じようにSQL Server Management Studioを開きます。

  2. [オブジェクト エクスプローラー] ウィンドウで、[セキュリティ] を右クリックし、[新規] をポイントして、[ログイン] をクリックします。

  3. [ ログイン – 新規 ] ダイアログ ボックスの [ ログイン名 ] ボックスに、デプロイ アカウントの名前 ( FABRIKAM\matt など) を入力します。

  4. [ ページの選択 ] ウィンドウで、[ サーバーの役割] をクリックします。

  5. [ dbcreator] を選択し、[OK] をクリック します

    [dbcreator] を選択し、[OK] をクリックします。

後続のデプロイをサポートするには、最初のデプロイ後に、データベースの db_owner ロールにデプロイ アカウントを追加する必要もあります。 これは、以降のデプロイでは、新しいデータベースを作成するのではなく、既存のデータベースのスキーマを変更するためです。 前のセクションで説明したように、明らかな理由から、データベースを作成するまで、データベース ロールにユーザーを追加することはできません。

デプロイ アカウントのログインをdb_ownerデータベース ロールにマップするには

  1. 前と同じようにSQL Server Management Studioを開きます。

  2. [オブジェクト エクスプローラー] ウィンドウで、[セキュリティ] ノードを展開し、[ログイン] ノードを展開し、マシン アカウントログイン (FABRIKAM\matt など) をダブルクリックします。

  3. [ ログインのプロパティ ] ダイアログ ボックスで、[ ユーザー マッピング] をクリックします。

  4. [ このログイン にマップされたユーザー ] テーブルで、データベースの名前 ( ContactManager など) を選択します。

  5. [ データベース ロール メンバーシップ for:[データベース名] の 一覧で、 db_owner ロールを選択します。

    [データベース ロールのメンバーシップ] の [データベース名] ボックスの一覧で、db_owner ロールを選択します。

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

まとめ

これで、データベース サーバーは、リモート データベースのデプロイを受け入れ、リモート IIS Web サーバーがデータベースにアクセスできるようにする準備が整いました。 データベースのデプロイと使用を試みる前に、次の重要なポイントをチェックできます。

  • リモート TCP/IP 接続を受け入れるようにSQL Serverを構成しましたか?
  • SQL Server トラフィックを許可するようにファイアウォールを構成しましたか?
  • SQL Serverにアクセスするすべての Web サーバーに対してマシン アカウント ログインを作成しましたか?
  • データベースのデプロイには、ユーザー ロール マッピングを作成するためのスクリプトが含まれていますか。または、データベースを初めてデプロイした後に手動で作成する必要がありますか?
  • デプロイ アカウントのログインを作成し、 dbcreator サーバー ロールに追加しましたか?

もっと読む

データベース プロジェクトの配置に関するガイダンスについては、「データベース プロジェクト の配置」を参照してください。 配置後スクリプトを実行してデータベース ロール メンバーシップを作成する方法については、「 Deploying Database Role Memberships to Test Environments」を参照してください。 メンバーシップ データベースで発生する固有の展開の課題を満たす方法については、「 Enterprise Environment へのメンバーシップ データベースのデプロイ」を参照してください。