SQL Server Browser サービス
適用対象: SQL Server - Windows のみ
SQL Server Browser プログラムは、Windows サービスとして実行されます。 SQL Server Browser は、 SQL Server の各種リソースに関する着信要求を受信し、コンピューターにインストールされている SQL Server インスタンスに関する情報を提供します。 SQL Server Browser は次の操作に役立ちます。
- 使用可能なサーバーの一覧の参照。
- 適切なサーバー インスタンスへの接続。
- 専用管理者接続 (DAC) のエンドポイントへの接続。
データベース エンジンと SQL Server Analysis Services (SSAS) のインスタンスごとに、SQL Server Browser サービス (sqlbrowser) でインスタンス名とバージョン番号が提供されます。 SQL Server Browser は SQL Server と一緒にインストールされます。
SQL Server Browser は、セットアップ時に、または SQL Server 構成マネージャーを使用して構成できます。 既定では、 SQL Server Browser サービスは次の場合に自動的に開始されます。
- インストールをアップグレードする場合
- クラスターにインストールする場合
- SQL Server Express のすべてのインスタンスを含む、データベース エンジンの名前付きインスタンスをインストールする場合
- SSAS の名前付きインスタンスをインストールする場合
背景
SQL Server 2000 (8.x) より前は、コンピューターにインストールできる SQL Server のインスタンスは 1 つだけでした。 SQL Server は、公式の Internet Assigned Numbers Authority (IANA) によって SQL Server に割り当てられたポート 1433 で着信要求を待ちます。 SQL Server の 1 つのインスタンスしかポートを使用できないので、SQL Server 2000 (8.x) で SQL Server の複数のインスタンスをサポートするようになったとき、SQL Server Resolution Protocol (SSRP) が開発され、ユーザー データグラム プロトコル (UDP) ポート 1434 で受信待ちするようになりました。 このリスナー サービスは、インストールされているインスタンスの名前と、そのインスタンスが使用しているポートまたは名前付きパイプでクライアント要求に応答します。
SSRP システムの制限を解消するため、SQL Server 2005 (9.x) では SSRP の代わりに SQL Server Browser サービスを導入しています。
SQL Server Browser のしくみ
SQL Server のインスタンスが起動して、SQL Server に対して TCP/IP プロトコルが有効な場合は、サーバーに TCP/IP ポートが割り当てられます。 名前付きパイプのプロトコルが有効な場合、SQL Server は特定の名前付きパイプでリッスンします。 クライアント アプリケーションとのデータの交換には、このポート、つまり名前付きパイプがその固有のインスタンスで使用されます。 TCP/IP ポート 1433 とパイプ \sql\query
は、インストール時に既定のインスタンスに割り当てられます。 サーバー管理者は、SQL Server 構成マネージャーを使用してポートまたは名前付きパイプを変更できます。
ポートまたはパイプを使用できるのは SQL Server の 1 つのインスタンスだけなので、 SQL Server Expressを含めて、名前付きインスタンスには別のポート番号とパイプ名が割り当てられます。 有効にすると、既定では、名前付きインスタンスと SQL Server Express は動的ポートを使用するように構成されます。 つまり、SQL Server の起動時に使用可能なポートが割り当てられます。
必要であれば、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 サービスの開始、停止、一時停止、再開、再起動」の記事を参照してください。
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 または Azure Data Studio でのサーバーの列挙。
クライアント サーバーのシナリオで SQL Server を使用しているとします (アプリケーションがネットワーク経由で SQL Server にアクセスしている場合など)。 SQL Server Browser サービスを停止または無効にする場合は、各インスタンスに特定のポート番号を割り当て、そのポート番号を使用するクライアント アプリケーション コードを記述する必要があります。 この方法には次の問題があります。
- クライアント アプリケーションが必ず適切なポートに接続するように、コードを更新および管理しておく必要があります。
- 各インスタンスに対して選択したポートがサーバー上の別のサービスまたはアプリケーションによって使用されている場合があります。この場合、SQL Server のインスタンスは使用できません。
クラスターと SQL Server Browser
SQL Server Browser はクラスター化されたリソースではなく、クラスター ノード間のフェールオーバーはサポートしません。 そのため、クラスターの場合は、クラスター ノードごとに SQL Server Browser をインストールしてオンにする必要があります。 クラスターでは、SQL Server Browser は IP_ANY
で受信待ちします。
Note
SQL Server Browser では最初に検出された IP とポートのペアが返されるため、IP_ANY でリッスンしているときに特定の IP でのリッスンを有効にする場合は、ユーザーは各 IP に同じ TCP ポートを構成する必要があります。
コマンド ラインからインストール、アンインストール、実行する
既定では、SQL Server Browser プログラムは C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe にインストールされます。
SQL Server の最後のインスタンスを削除すると、 SQL Server Browser サービスがアンインストールされます。
SQL Server Browser は、トラブルシューティングの目的で、コマンド プロンプトから -c スイッチを使用して起動できます。
<drive>\<path>\sqlbrowser.exe -c
セキュリティ
SQL Server Browser サービスは、SQL Server インスタンスとのネットワーク通信を容易にする上で非常に重要です。
SQL Server Browser サービスのセキュリティ対策には次のようなものがあります。
- トラフィックを許可するようにファイアウォールを構成する。
- 信頼済み IP アドレスへのアクセスを制限する。
- 脆弱性のパッチのために更新を定期的に適用する。
- さらに、不正アクセスを防ぎ、SQL Server 環境の整合性を維持するために、強力な認証と承認ポリシーを実装することが不可欠です。
アカウントの権限
SQL Server Browser は、UDP ポートでリッスンし、 SQL Server Resolution Protocol (SSRP) を使用して未認証の要求を受け入れます。 SQL Server Browser を権限が制限されているユーザーのセキュリティ コンテキストで実行することにより、悪意のある攻撃にさらされる危険性を最小限に抑える必要があります。 サインイン アカウントは SQL Server 構成マネージャーを使用して変更できます。
SQL Server Browser の最小限のユーザー権限は次のとおりです。
- ネットワークからこのコンピューターへのアクセスを拒否。
- ローカルでのサインインを拒否。
- バッチ ジョブとしてのサインインを拒否。
- ターミナル サービス経由のログオンを拒否。
- サービスとしてサインインします。
- ネットワーク通信に関連する SQL Server レジストリ キーの読み取りおよび書き込み (ポートおよびパイプ)。
既定のアカウント
セットアップ プログラムは、セットアップ中にサービス用に選択したアカウントを SQL Server Browser が使用するように構成します。 他に可能なアカウントは次のとおりです。
- すべての domain\local アカウント。
- ローカル サービス アカウント。
- ローカル システム アカウント (不要な権限があるので推奨しません)。
SQL Server を非表示にする
非表示インスタンスは、共有メモリ接続のみをサポートする SQL Server のインスタンスです。 SQL Server の場合は、SQL Server Browser がこのサーバー インスタンスに関する情報を返さないことを示すために HideInstance
フラグを設定します。
ファイアウォールを使用する
ファイアウォールの背後にあるサーバーの SQL Server Browser サービスと通信するには、UDP ポート 1434 と SQL Server で使用される TCP/IP ポート (1433 など) を開きます。 ファイアウォールの使用については、「SQL Server のアクセスを許可するための Windows ファイアウォールの構成」を参照してください。