SQL Server データベース エンジンのインスタンスの非表示

適用対象:SQL Server

このトピックでは、SQL Server 構成マネージャーを使用して データベース エンジン で SQL Server のインスタンスを非表示にする方法について説明します。 SQL Server では、 SQL Server Browser サービスを使用して、コンピューターにインストールされている データベース エンジン のインスタンスを列挙します。 この機能により、クライアント アプリケーションはサーバーを参照できるようになり、クライアントは、同じコンピューター上にある データベース エンジン の複数のインスタンスを区別できるようになります。 次の手順に従い、 データベース エンジン [参照] ボタンを使用してこの インスタンスを表示しようとするクライアント コンピューターに対して、SQL Server Browser サービスがそのインスタンスを公開しないようにできます。

SQL Server 構成マネージャーの使用

SQL Server データベース エンジンのインスタンスを非表示にするには

  1. SQL Server 構成マネージャーで、[SQL Server ネットワークの構成] を展開し、[<server instance>のプロトコル] を右クリックします。次に [プロパティ] を選びます。

  2. [フラグ] タブで [HideInstance] ボックスの一覧の [はい] を選択し、 [OK] をクリックしてダイアログ ボックスを閉じます。 この変更は、新しい接続ですぐに有効になります。

解説

名前付きインスタンスを非表示にする場合、ブラウザー サービスが実行中でも、非表示のインスタンスに接続するための接続文字列でポート番号を提供する必要があります。 名前付きの非表示のインスタンスに対しては、動的ポートではなく静的ポートを利用することをお勧めします。
詳細については、「特定の TCP ポートで受信待ちするようにサーバーを構成する方法 (SQL Server 構成マネージャー)」を参照してください。

クラスタリング

クラスター化されたインスタンスまたは可用性グループ名を非表示にすると、クラスター サービスが SQL Serverに接続できないことがあります。 これにより、クラスター インスタンスの IsAlive のチェックが失敗し、SQL Server がオフラインになります。

これを回避するには、インスタンス用に構成した静的ポートを反映するように、クラスター化されたインスタンスのすべてのノードまたは可用性グループ レプリカをホストするすべてのインスタンスに別名を作成します。 たとえば、2 つのレプリカを持つ可用性グループでは、node-two\instancename のように、ノード 1 にノード 2 インスタンスの別名を作成します。 ノード 2 で、node-one\instancename という別名を作成します。 フェールオーバーを正常に行うには、別名が必要です。

詳細については、「クライアントが使用するサーバーの別名の作成または削除 (SQL Server 構成マネージャー)」を参照してください。

クラスター化された名前付きインスタンスを非表示にすると、LastConnect レジストリ キー (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect) のポートが SQL Server のリッスンしているポートと異なる場合、クラスター サービスは SQL Server に接続できなくなる可能性があります。 クラスター サービスが SQL Serverに接続できない場合、次のようなエラーが表示されることがあります:
イベント ID:1001:イベント名:フェールオーバー クラスタリング リソース デッドロック。

参照

サーバー ネットワークの構成
SQL 仮想サーバーのクライアント接続の説明
SQL Server 名前付きインスタンスに静的ポートを割り当て、一般的な落とし穴を回避する方法