SQL Server Browser の使用
更新 : 2005 年 12 月 5 日
SQL Server Browser は、サーバー上の Windows サービスとして実行されます。SQL Server Browser は、SQL Server の各種リソースに関する着信要求を受信し、このコンピュータにインストールされている SQL Server のインスタンスに関する情報を提供します。SQL Server Browser は次の 3 つの操作に使用します。
- 使用可能なサーバーの一覧の参照
- 適切なサーバー インスタンスへの接続
- 専用管理者接続 (DAC) のエンドポイントへの接続
SQL Server Browser サービス (sqlbrowser) は、データベース エンジンの各インスタンスに対してインスタンス名とバージョン番号を提供します。SQL Server Browser は SQL Server 2005 と共にインストールされ、SQL Server 7.0 以降では、そのコンピュータで実行されている以前のバージョンの SQL Server に対するサポートを提供します。
既定では、SQL Server Browser サービスは SQL Server Express に対応していません。SQL Server Browser は最初はセキュリティ構成ツールを使用して構成し、SQL Server 構成マネージャを使用して管理できます。
背景
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) が開発され、ポート 1434 をリッスンするようになりました。このリスナ サービスは、インストールされているインスタンスの名前と、そのインスタンスが使用しているポートまたは名前付きパイプで、クライアント要求に応答していました。SSRP システムの制限を解消するため、SQL Server 2005 では SSRP の代わりに SQL Server Browser サービスを提供しています。
SQL Server Browser のしくみ
SQL Server のインスタンスを起動すると、SQL Server に対して TCP/IP または VIA プロトコルが有効な場合は、サーバーに TCP/IP ポートが割り当てられます。名前付きパイプのプロトコルが有効な場合、SQL Server は特定の名前付きパイプをリッスンします。クライアント アプリケーションとのデータの交換には、このポートまたはパイプがそのインスタンスで使用されます。インストール中、ポート 1433 とパイプ \sql\query
が既定のインスタンスに割り当てられますが、これは後でサーバー管理者が SQL Server 構成マネージャを使用して変更できます。1 つのポートまたはパイプを使用できるのは SQL Server の 1 つのインスタンスだけなので、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 2005 と SQL Server Browser では ipv6 と ipv4 をサポートしています。
SQL Server 2000 クライアントと SQL Server 2005 クライアントが SQL Server リソースを要求すると、ポート 1434 を使用しているサーバーにクライアント ネットワーク ライブラリが UDP メッセージを送信します。SQL Server Browser は、要求されたインスタンスの TCP/IP ポートまたは名前付きパイプで応答します。その後、クライアント アプリケーションのネットワーク ライブラリが、目的のインスタンスのポートまたは名前付きパイプを使用しているサーバーに要求を送って接続を完了します。
SQL Server Browser の使用
SQL Server Browser サービスが実行されていない場合でも、正しいポート番号か名前付きパイプを指定すれば SQL Server に接続できます。たとえば、SQL Server の既定のインスタンスがポート 1433 で実行されている場合は、TCP/IP を使用して接続できます。
次の接続は確立できません。
- パラメータ (たとえば TCP/IP ポートや名前付きパイプ) を完全に指定せずに名前付きインスタンスに接続しようとするコンポーネント。
- 後で他のコンポーネントが再接続に使用できるような、サーバーまたはインスタンスの情報を生成するか渡すコンポーネント。
- ポート番号やパイプを指定せずに名前付きインスタンスに接続する。これには、名前付きインスタンスへのデータ ミラーリングや、名前付きインスタンスのクラスタ化が含まれます。
- TCP/IP ポート 1434 を使用していない場合は、名前付きインスタンスや既定のインスタンスへの専用管理者接続。
- 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 を SP3 以降にアップグレードする必要があります。SP3 より前のバージョンではポート 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 は開始されません。SP3a より前のバージョンの SQL Server 2000 で発生するこの問題を解決するには、SQL Server 2000 を停止し、SQL Server Browser を起動してから SQL Server 2000 を再起動します。SQL Server 2000 リスナ サービスは引き続きポート 1434 で開始しようとするので、SQL Server 2000 のインスタンスをできるだけ早く SP3a 以降にアップグレードする必要があります。
SQL Server 7.0 が SQL Server Browser と競合することはありません。
コマンド ラインからのインストール、アンインストール、実行
既定では、SQL Server Browser プログラムは C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe
にインストールされます。コンピュータに SQL Server 2000 がインストールされていても SP 3 にアップグレードしていない場合や、SQL Server 2000 のインスタンスをアップグレードしていない場合は、SQL Server 2005 をインストールする間 SQL Server 2000 を停止する必要があります。SQL Server 2000 が実行中の場合、SQL Server Browser を起動してポート 1434 を要求できないため、接続できずインストールに失敗することがあります。
SQL Server 2005 の最後のインスタンスを削除すると、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 Browser はローカル システム アカウントを使用して開始されます。ログオン アカウントは、Windows サービス プログラムを使用して変更できます。SQL Server Browser の最小限のユーザー権限は次のとおりです。
- ネットワークからこのコンピュータへのアクセスを拒否
- ローカルでのログオンを拒否
- バッチ ジョブとしてのログオンを拒否
- ターミナル サービス経由のログオンを拒否
- サービスとしてログオン
- ネットワーク通信に関連する SQL Server レジストリ キーの読み取りおよび書き込み (ポートおよびパイプ)
既定のアカウント
セットアップ プログラムは、セットアップ中にサービス用に選択したアカウントを SQL Server Browser が使用するように構成します。他の可能なアカウントは次のとおりです。
- すべての domain\local アカウント
- ローカル サービス アカウント (Windows 2000 プラットフォームでは使用不可)
- ローカル システム アカウント (不要な権限があるので推奨しません)
SQL Server の非表示
非表示インスタンスとは、共有メモリ接続のみをサポートする SQL Server のインスタンスです。SQL Server 2005 の場合は、HideInstance
レジストリ キーで、SQL Server Browser がこのサーバー インスタンスに関する情報を返さないことが指定されます。また、SQL Server Browser では、サーバー ネットワーク ユーティリティで HideServer
オプションを設定することによってインスタンスを非表示にする SQL Server 2000 の方法もサポートしています。詳細については、SQL Server 2005 Books Online の「SQL Server データベース エンジンのインスタンスを非表示にする方法」を参照してください。
ファイアウォールの使用
ファイアウォールの背後にある SQL Server Browser サービスと通信するには、SQL Server で使用される TCP ポート (1433 など) の他に UDP ポート 1434 も開きます。詳細については、SQL Server 2005 Books Online の「SQL Server アクセスに対してファイアウォールを構成する方法」を参照してください。
参照
処理手順
SQL Server Browser サービスを開始および停止する方法 (SQL Server Express)