SQLServer – インスタンス名とポート番号

・SQLServer2008 Expressで名前つきインスタンスが接続できない。

SQLServer2008 Express(以下SQLServer)に接続するには、通常「server01¥SQLExpress」という名前つきインスタンスで接続します。ところが、今回SQLServerを入れたServer2012R2ではその名前で接続できましたが、他のリモートPCからは接続できないという現象が起きました。
2012ではデフォルトでファイアウォールが開始しているので、1433と2000等を開ける設定をしました。インスタンス名を解決するSQL Server Browserを再起動したり、それが使用する動的なポートを使用しないようにしたり、2000を設定したりしてみましたが、相変わらず接続できません。
「server01」(既定のインスタンス・サーバー名)では接続できます。また「server01¥SQLExpress,1433」でも接続ができました。サーバー自身では接続できているわけですから、やはりポート、ファイアウォール辺りの問題であることは間違いないようです。
さらに調べてゆくと、SQL Server Browserが特別のポートを使用していることが分かりました。UDPの1434を使用しているようです。SQL Server Browser サービス。これが原因です。
DNSサーバーの名前解決と同じ方法のようです。これを開けてやれば、解決です。

・SQLServer構成マネージャとファイアウォールの設定


SQL Server Browser


動的ポートを空白、使用しない。


TCPポートを開ける。


UDPポートを開ける。

以上の設定でローカルネットワーク内のPCからインスタンス名で接続できるようになりました。ODBCも同じように接続できるようになります。
ローカルネットワーク内でのファイアウォールは邪魔な感じもしますが、これからは、このように意識して開けてゆくことに慣れる必要があります。ポートの知識も必須となります。

Comments are closed.