ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

SQLServer2012の動的ポートのリッスンポート番号の設定が勝手に変更される

何らかの理由で、SQLServer2012の動的ポートのリッスンポート番号の設定が勝手に変更されるという事象があるということで、ちょっと調べました。そもそもSQLサーバーの知識があんまりないので、いい時間になりましたが、これについてはすでに過去の情報が明らかになっていました。

 

TCP動的ポートのポート番号が変わる? 
SQL Server > SQL Server

https://social.technet.microsoft.com/Forums/office/ja-JP/0f04d39b-0466-4422-a287-7cc291ebf8b1?forum=sqlserverja

 

情報がちょっと古いですが、質問事項の抜粋です。図的に設定を変更する以外で動的ポートのリッスンポート番号の設定が変わるというものです。

質問事項
意図的に設定を変更する以外で動的ポートのリッスンポート番号の設定が変わる可能性についてご存じないでしょうか。(パッチ適用、他のアプリとの関係、SQLServerの何らかの設定変更が影響など)

環境について
OS:Windows2003Server(Intel X86)
バージョン:SQL Server2005 Standerd Edtion(9.00.3042.00)

現象
アプリケーションから動的ポート1048に接続しておりましたが、ある日サーバ(OS)を再起動するとそのポート設定が1049に変わって起動しており、クライアントから接続できない状態となっていました。(人的変更の可能性は可能な限り消去しました)

 
ポートは動的になっている場合の回答がとても分かりやすいです。

 

SQL Server Browser サービス

http://msdn.microsoft.com/ja-jp/library/ms181087(SQL.90).aspx 

 

上記の「SQL Server Browser のしくみ」にも以下の記載がありますように、再起動すると変わります。
(もちろん、偶然同じポート番号が確保された場合は、変わらなかったように見えます。)

SQL Server の起動時に使用可能なポートが割り当てられます。
● ポートが動的に割り当てられる場合は、SQL Server が再起動されるたびにポート番号が変わる可能性があるので、クライアントは正しいポート番号を特定できません。

ですので、ポート番号が変わったのは仕様どおりということになるかと思います。

 

再起動すると動的ポートの場合はポート番号が変わるのが仕様ということで、動的ポートに直接接続しようとるうと、当然、接続できなくなることがあります。


その為、SQL Server Browser Serviceなどのサービスがあるようです。また、動的ポートは固定にすることもできます。たまに、設定方法を間違えることがあって、意図せず動的にポートが変わることがあるようなので、設定方法には注意してください。

 

ちなみに、動的ポートを固定にする設定は以下が参考になります。

特定の TCP ポートで受信待ちするようにサーバーを構成する - SQL Server | Microsoft Docs

 

こちらの記事では、SQL Server 構成マネージャーを使用して、 SQL Server データベース エンジン のインスタンスが特定の固定ポートで受信待ちするように構成する方法について書かれています。 詳しい設定方法は上記URLを参考にしてみてください。