web-dev-qa-db-ja.com

SQL Server名前付きインスタンスがポート1434でリッスンしていない

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を実行していた古いサーバーを置き換えるためのもので、そのサーバーはこのように設定し、問題なく稼働しています。そのため、同じ設定をコピーしましたが、名前付きインスタンスに接続できないようです。

4
kaitlyn

ここでさらに調査が必要です。最初に、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;
4
Solomon Rutzky

一般に、次のポートへのファイアウォールアクセスを許可して、SQL Serverにリモートで接続します。

デフォルトのインスタンスの場合

  • TCPポート1433
  • TCPポート1434(DAC接続用)

名前付きインスタンスの場合

  • TCPポート(SQL Serverがリッスンしているポート–エラーログでポートの詳細を確認します)
  • UDPポート1434(ブラウザサービス用)
  • Dedicated Admin接続がリッスンしているUDP(およびTCP)ポート(UDPは私のために機能したものです)。 SQL Serverログを確認して、専用ポートが確立されたポートを確認します。

「ポートXXXXXでローカルにリッスンするためのメッセージ専用管理接続サポートが確立されました」

名前付きインスタンスの場合、外部アプリケーションがインスタンス名を使用して接続している場合は、ブラウザーサービスが実行されていることを確認してください。

名前付きインスタンスの場合、静的ポートでリッスンするようにSQL Serverを構成することをお勧めします。そうしないと、SQL Serverが再起動されるたびに別のポートでリッスンするため、ファイアウォール管理が困難になります。

0
Masood Hashim