このKB記事:特定のポートでリッスンするようにSQL Serverを構成する方法は、次のことを明確にします。
動的ポート割り当て
動的ポート割り当てを使用するようにSQL Serverのインスタンスを構成し、SQL Serverのインスタンスをまだ再起動していない場合、レジストリ値は次のように設定されます。
TCPDynamicPorts =空白
TCPPort = 0
ただし、動的ポート割り当てを使用するようにSQL Serverのインスタンスを構成し、SQL Serverのインスタンスを再起動すると、レジストリ値は次のように設定されます。
TCPDynamicPorts =使用されている現在のポート
TCPPort =使用されている現在のポート
静的ポート割り当て:
静的ポートを使用するようにSQL Serverのインスタンスを構成し、SQL Serverのインスタンスをまだ再起動していない場合、レジストリ値は次のように設定されます。
TCPDynamicPorts =使用される最後のポート
TCPPort =次の再起動後に使用される新しい静的ポート。サーバーネットワークユーティリティを使用して設定した新しい静的ポート
ただし、静的ポートを使用するようにSQL Serverのインスタンスを構成し、SQL Serverのインスタンスを再起動すると、レジストリ値は次のように設定されます。
TCPDynamicPorts =空白
TCPPort =サーバーネットワークユーティリティを使用して設定した新しい静的ポート
2番目の質問 -
名前付きSQLServerを起動するたびに、割り当てられたポートが使用されます。ポートが別のプログラムで使用されている場合、 SQL Serverは再起動時に別のポートを選択します。つまり、動的ポートは最初の起動時に選択され、通常は将来の再起動(レジストリに保存)でも同じままです -ただし別のプログラムで使用されると、SQLサーバーは新しいポートを選択します。注:Prodサーバーでは、静的ポートのみを使用します-セキュリティと管理の容易さの理由。
注:もっとクールなことを見つける:
動的ポートが使用されているか、T-SQLを使用していないかを確認します。
SELECT NAME
,protocol_desc
,type_desc
,state_desc
,is_admin_endpoint
,port
,is_dynamic_port
,ip_address
FROM sys.tcp_endpoints
netstat -ano
cmdlineを使用して確認するために使用できます 。
さらに、SQL Serverへの接続に使用しているポートについて、クライアント側のレジストリで以前にキャッシュされたものを確認できます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI11.0\LastConnect
Second question
上記の私の質問をご覧ください。