SQL Server 2016をWindows 2016サーバーにインストールしました。そのサーバーの名前付きインスタンスへの接続に問題があります。サーバーがポート1434でもリッスンしていないことに気づきました。通常、次のようにログに表示されます。
Server is listening on [XX.XX.XX.XX <ipv4> 1434>
しかし、ログに表示されるのは次のものだけです。
Server is listening on [ 127.0.0.1 <ipv4> 63229].
Server is listening on [ ::1 <ipv6> 63229].
ローカルサーバー以外でこの名前付きインスタンスに接続しているように見えます。この名前付きインスタンスにヒットするアプリが実行されていますが、接続に問題があるようです。
私もnetstat -ao | findstr /I "processID"
と私は1434ポートを見ることができませんでした。 TCPポート1434をIPに使用するようにTCP/IPを構成しましたが、それでも機能しません。
1434でリッスンしない理由はありますか?
構成マネージャーをチェックインしたところ、すべて問題なく見えました。 TCP/IPが有効になり、SQLサービスが再起動されました。起動時にそのポートをリッスンしていないようです。
SQLブラウザーサービスがオンになっています。 TCPポート1434はIPに割り当てられていますが、TCP動的ポートおよびTCPポートはIPALL
。
おそらく問題は、名前付きインスタンスがどのように設定されることになっているのでしょうか?これは、SQL 2012を実行していた古いサーバーを置き換えるためのもので、そのサーバーはこのように設定し、問題なく稼働しています。そのため、同じ設定をコピーしましたが、名前付きインスタンスに接続できないようです。
ここでさらに調査が必要です。最初に、netstat
フィルターのfindstr
出力のフィルタリングが多すぎる可能性があります。 「processID」の代わりに、「:1434」を使用してポート番号を確認します。また、-q
の代わりに-a
スイッチを使用すると、バインドされた非リスニングポートが表示されるため、より適切な場合があります。例えば:
netstat -qof | findstr ":1434"
または、管理者としてコマンドプロンプトを起動すると、-b
スイッチを追加して、各プロセスに関連付けられたプログラムの名前を出力できます(プログラムにプロセスIDをマップする必要がなくなるため、この手順を省略できます)。これを行うと、各エントリの出力は2行になり、findstr
を使用してもこれらの行には一致する文字列がないため、追加情報は表示されません。代わりに、次のようにmore
にパイプします。
netstat -qofb | more
さて、netstat
を使用すると、ポートが使用されているかどうかを調べるのに便利ですが、この問題では、SQL Serverが何を考えているかを確認する方が簡単です。したがって、エラーログをスキャン/解析する必要はありません。次のことを確認してください。
したがって、以下を実行するだけです。
SELECT * FROM sys.tcp_endpoints;
SELECT * FROM sys.dm_tcp_listener_states;
最初のビューsys.tcp_endpoints
に、「専用管理接続」に「STARTED」以外のstate_desc
があることが示されている場合は、問題があります。
さて、2番目のビューsys.dm_tcp_listener_states
では、ip_address
に ":: 1"(IP v 6)または "127.0.0.1"(IP v 4)がある場合、それはローカルでリッスンしています(つまり、リモート管理アクセスはオフです)。代わりに「::」(IP v 6)または「0.0.0.0」(IP v 4)が表示される場合、リモート管理アクセスはオンです。
デフォルトでは、リモート管理アクセスはオフです。これを有効にするには、次のコマンドを実行します(これはnot「高度な」オプションです):
EXEC sp_configure N'remote admin connections', 1; RECONFIGURE;
一般に、次のポートへのファイアウォールアクセスを許可して、SQL Serverにリモートで接続します。
デフォルトのインスタンスの場合
名前付きインスタンスの場合
「ポートXXXXXでローカルにリッスンするためのメッセージ専用管理接続サポートが確立されました」
名前付きインスタンスの場合、外部アプリケーションがインスタンス名を使用して接続している場合は、ブラウザーサービスが実行されていることを確認してください。
名前付きインスタンスの場合、静的ポートでリッスンするようにSQL Serverを構成することをお勧めします。そうしないと、SQL Serverが再起動されるたびに別のポートでリッスンするため、ファイアウォール管理が困難になります。