SQL Server Browser サービス

SQL Server Browser プログラムは Windows サービスとして実行されます。SQL Server Browser は、MicrosoftSQL Server の各種リソースに関する着信要求を受信し、このコンピュータ上にインストールされている SQL Server インスタンスに関する情報を提供します。SQL Server Browser は次の操作に役立ちます。

  • 使用可能なサーバーの一覧の参照

  • 適切なサーバー インスタンスへの接続

  • 専用管理者接続 (DAC) のエンドポイントへの接続

SQL Server Browser サービス (sqlbrowser) は、データベース エンジンと SSAS の各インスタンスに対してインスタンス名とバージョン番号を提供します。SQL Server Browser は SQL Server と共にインストールされ、SQL Server 7.0 以降では、そのコンピュータ上で実行されている以前のバージョンの SQL Server にこのサービスを提供します。

SQL Server Browser は、セットアップ時に、または SQL Server 構成マネージャを使用して構成できます。既定では、SQL Server Browser サービスは次の場合に自動的に開始されます。

  • インストールをアップグレードする場合

  • SQL Server 2000 のインスタンスとサイド バイ サイドでインストールする場合

  • クラスタにインストールする場合

  • SQL Server Enterprise、Standard、または Workgroup の名前付きインスタンスをインストールする場合

  • Analysis Services の名前付きインスタンスをインストールする場合

背景

SQL Server 2000 より前は、コンピュータにインストールできる SQL Server のインスタンスは 1 つだけでした。SQL Server は、公式の Internet Assigned Numbers Authority (IANA) によって SQL Server に割り当てられたポート 1433 で着信要求を待ちます。SQL Server の 1 つのインスタンスしかポートを使用できないので、SQL Server 2000 で SQL Server の複数のインスタンスをサポートするようになったとき、SQL Server Resolution Protocol (SSRP) が開発され、UDP ポート 1434 で受信待ちするようになりました。このリスナ サービスは、インストールされているインスタンスの名前と、そのインスタンスが使用しているポートまたは名前付きパイプでクライアント要求に応答していました。SSRP システムの制限を解消するため、SQL Server 2005 では SSRP の代わりに SQL Server Browser サービスを導入しています。

SQL Server Browser のしくみ

SQL Server のインスタンスを起動すると、SQL Server に対して TCP/IP または VIA プロトコルが有効な場合は、サーバーに TCP/IP ポートが割り当てられます。名前付きパイプのプロトコルが有効な場合、SQL Server は特定の名前付きパイプで受信待ちします。クライアント アプリケーションとのデータの交換には、このポート、つまり "パイプ" がそのインスタンスで使用されます。インストール中、TCP ポート 1433 とパイプ \sql\query が既定のインスタンスに割り当てられますが、これは後でサーバー管理者が SQL Server 構成マネージャを使用して変更できます。ポートまたはパイプを使用できるのは SQL Server の 1 つのインスタンスだけなので、SQL Server Express を含めて、名前付きインスタンスには別のポート番号とパイプ名が割り当てられます。既定では、名前付きインスタンスと SQL Server Express が有効な場合、両方とも動的ポートを使用するように設定されています。つまり、SQL Server の起動時に使用可能なポートが割り当てられます。必要であれば、SQL Server のインスタンスに特定のポートを割り当てることができます。クライアントは接続時に特定のポートを指定できますが、ポートが動的に割り当てられる場合は、SQL Server が再起動されるたびにポート番号が変わる可能性があるので、クライアントは正しいポート番号を特定できません。

起動時に SQL Server Browser が開始されて UDP ポート 1434 が要求されます。SQL Server Browser はレジストリを読み取り、コンピュータ上の SQL Server のインスタンスをすべて識別し、それらのインスタンスで使用されるポートと名前付きパイプを記録します。サーバーに複数のネットワーク カードがある場合は、SQL Server Browser が最初に検出したポートを SQL Server に返します。SQL Server Browser では ipv6 と ipv4 をサポートしています。

SQL Server クライアントが SQL Server リソースを要求すると、ポート 1434 を使用しているサーバーにクライアント ネットワーク ライブラリが UDP メッセージを送信します。SQL Server Browser は、要求されたインスタンスの TCP/IP ポートまたは名前付きパイプで応答します。その後、クライアント アプリケーションのネットワーク ライブラリが、目的のインスタンスのポートまたは名前付きパイプを使用しているサーバーに要求を送って接続を完了します。

SQL Server Browser サービスの開始および停止については、「SQL Server Browser サービスを開始および停止する方法」を参照してください。

SQL Server Browser の使用

SQL Server Browser サービスが実行されていない場合でも、正しいポート番号か名前付きパイプを指定すれば SQL Server に接続できます。たとえば、SQL Server の既定のインスタンスがポート 1433 で実行されている場合は、TCP/IP を使用して接続できます。

ただし、SQL Server Browser サービスが実行されていない場合は、次の接続が機能しません。

  • パラメータ (たとえば TCP/IP ポートや名前付きパイプ) を完全に指定せずに名前付きインスタンスに接続しようとするコンポーネント。

  • 後で他のコンポーネントが再接続に使用する可能性のあるサーバーまたはインスタンス情報を生成するかまたは渡すコンポーネント。

  • ポート番号やパイプを指定せずに名前付きインスタンスに接続する。

  • TCP/IP ポート 1433 を使用していない場合は、名前付きインスタンスや既定のインスタンスへの DAC。

  • OLAP リダイレクタ サービス。

  • SQL Server Management Studio、Enterprise Manager、またはクエリ アナライザでのサーバーの列挙。

SQL Server をクライアント/サーバーのシナリオで使用している場合 (たとえば、アプリケーションがネットワーク経由で SQL Server にアクセスしている場合)、SQL Server Browser サービスを停止または無効化するには、各インスタンスに特定のポート番号を割り当て、常にそのポート番号が使用されるようにクライアント アプリケーションのコードを記述する必要があります。この方法には次の問題があります。

  • クライアント アプリケーションが必ず適切なポートに接続するように、コードを更新および管理しておく必要があります。

  • 各インスタンスに対して選択したポートがサーバー上の別のサービスまたはアプリケーションによって使用されている場合があります。この場合、SQL Server のインスタンスは使用できません。

SQL Server 2000 とのサイド バイ サイド インストール

SQL Server 2000 では、サーバー接続エンドポイントの識別は SQL Server サービスによって実行されていました。SQL Server 2005 ではその機能が SQL Server Browser サービスに置き換えられました。SQL Server 2000 または MSDE を実行しているコンピュータに SQL Server をインストールする場合は、SQL Server 2000 または MSDE を Service Pack 3a (SP3a) 以降にアップグレードする必要があります。SP3a より前のバージョンではポート 1434 が正しく共有されず、要求元のクライアント アプリケーションが SQL Server のインスタンスを使用できない可能性があります。サービスの開始順序を変更して、SQL Server 2000 または MSDE の前に SQL Server Browser サービスを開始することもできますが、SQL Server の以前のバージョンをすべて最新の Service Pack に更新することをお勧めします。

Service Pack 3a 以降に更新されていない SQL Server 2000 のインスタンスをコンピュータにインストールしてあれば、SQL Server Browser が実行されていない場合は、SQL Server 2000 リスナ サービスが開始されます。SQL Server Browser がリスナ サービスの後で起動する場合は、SQL Server 2000 がポート 1434 での接続を断念するまで 5 秒待ちます。接続を確立できない場合、SQL Server Browser が起動に失敗します。Service Pack 3a より前のバージョンの SQL Server 2000 で発生するこの問題を解決するには、SQL Server 2000 を停止し、SQL Server Browser を起動してから SQL Server 2000 を再起動します。SQL Server 2000 リスナ サービスは引き続きポート 1434 で開始しようとするので、SQL Server 2000 のインスタンスをできるだけ早く Service Pack 3a にアップグレードする必要があります。

SQL Server 7.0 には類似機能がないため、SQL Server Browser と競合することはありません。

クラスタリング

SQL Server Browser はクラスタ化されたリソースではなく、クラスタ ノード間のフェールオーバーはサポートしません。そのため、クラスタの場合は、クラスタのノードごとに SQL Server Browser をインストールして有効にする必要があります。クラスタでは、SQL Server Browser は IP_ANY で受信待ちします。

注意注意

SQL Server Browser では最初に検出された IP とポートのペアが返されるため、IP_ANY で受信待ちのときに特定の IP での受信待ちを有効にする場合は、各 IP に同じ TCP ポートを構成する必要があります。

コマンド ラインからのインストール、アンインストール、実行

既定では、SQL Server Browser プログラムは C:\Program Files\Microsoft SQL Server\100\Shared\sqlbrowser.exe にインストールされます。コンピュータに SQL Server 2000 がインストールされていても Service Pack 3 にアップグレードしていない場合や、SQL Server 2000 のインスタンスをアップグレードしていない場合は、SQL Server をインストールする間 SQL Server 2000 を停止する必要があります。SQL Server 2000 が実行中の場合、SQL Server Browser を起動してポート 1434 を要求できないため、接続できずインストールに失敗する可能性があります。

SQL Server の最後のインスタンスを削除すると、SQL Server Browser サービスがアンインストールされます。SQL Server 2000 のインスタンスは元の動作に戻ります。

SQL Server Browser は、トラブルシューティングの目的で、コマンド プロンプトから -c スイッチを使用して起動できます。

<drive>\<path>\sqlbrowser.exe -c

セキュリティ

アカウントの権限

SQL Server Browser は UDP ポートで受信待ちし、SQL Server Resolution Protocol (SSRP) を使用して、認証されていない要求を受け入れます。権限が制限されているユーザーのセキュリティ コンテキストで SQL Server Browser を実行することにより、悪意のある攻撃にさらされる危険性を最小限に抑える必要があります。ログオン アカウントは SQL Server 構成マネージャを使用して変更できます。SQL Server Browser の最小限のユーザー権限は次のとおりです。

  • ネットワークからこのコンピュータへのアクセスを拒否

  • ローカルでのログオンを拒否

  • バッチ ジョブとしてのログオンを拒否

  • ターミナル サービス経由のログオンを拒否

  • サービスとしてログオン

  • ネットワーク通信に関連する SQL Server レジストリ キーの読み取りおよび書き込み (ポートおよびパイプ)

既定のアカウント

セットアップ プログラムは、セットアップ中にサービス用に選択したアカウントを SQL Server Browser が使用するように構成します。他に可能なアカウントは次のとおりです。

  • すべての domain\local アカウント

  • ローカル サービス アカウント (Windows 2000 プラットフォームでは使用不可)

  • ローカル システム アカウント (不要な権限があるので推奨しません)

SQL Server の非表示

非表示インスタンスは、共有メモリ接続のみをサポートする SQL Server のインスタンスです。SQL Server の場合は、SQL Server Browser がこのサーバー インスタンスに関する情報を返さないことを示すために HideInstance フラグを設定します。また、SQL Server Browser では、サーバー ネットワーク ユーティリティで HideServer オプションを設定することによってインスタンスを非表示にする SQL Server 2000 の方法もサポートしています。HideServer オプションの構成の詳細については、SQL Server オンライン ブックの「SQL Server データベース エンジンのインスタンスを非表示にする方法」を参照してください。

ファイアウォールの使用

ファイアウォールの背後にある SQL Server Browser サービスと通信するには、SQL Server で使用される TCP ポート (1433 など) の他に UDP ポート 1434 も開きます。ファイアウォールを使用した作業の詳細については、SQL Server オンライン ブックの「SQL Server アクセスに対してファイアウォールを構成する方法」を参照してください。