昨日までクライアント端末からSQL Serverに問題なく接続できていたのに突然接続ができなくなったことがあったので、そのときの原因と対処方法について覚え書きしておきます。
発生したエラー
クライアントPCのSQL Server Management StudioからSQL Serverに接続しようとしたらこんなエラーメッセージが表示され、接続できなくなりました。
「SQL Server が存在しないか、アクセスが拒否されました。」
一週間くらい前まではきちんとつながったのに!!
原因
つながらなくなったサーバーに前回正常に接続できてから今日までの間に何か変更を加えたか?と記憶をたどったら、あー、そういえばアンチウイルスソフトを「Sophos」に入れ替えたなーと。
インストールされているのはSQL Server Express版で「名前付きインスタンス」でインストールしてあります。
「名前付きインスタンス」の場合、通信ポートに動的ポートを使用するため、たぶんこの動的ポートがSophosによってブロックされていることが疑われます。
試しに「Sophos」をアンインストールしたら問題なく接続できるようになったので間違いないでしょう。
「Sophos」の設定でポートの使用許可設定ができればいいのですが、管理サーバー側でしかできないので別の対処方法によって問題を回避することにしました。
対処手順
サーバー側のSQL Serverのプロトコル設定で動的ポートから「規定のインスタンス」で使用されるポート「1433」を指定する設定に変更し、SQL Serverを再起動したところ問題なく接続できるようになりました。
「1433」はメジャーなポート番号だからブロック対象外になっている?のかよくわかりませんが、とりあえずつながるようになったので良しとします。
対処手順は以下の通り。
TCPポートの変更
SQL Serverがインストールされているサーバーマシンの[スタートメニュー]から[Microsoft SQL Server 2019] > [構成ツール] > [SQL Server 2019 構成マネージャ]をクリックし、「SQL Server 構成マネージャ」を起動します。
※SQL Serverのバージョンによっては[構成ツール]メニューがなく、[Microsoft SQL Server XXXX]メニュー内にある場合があります。
「Sql Server Configuration Manager」画面が表示されるので、[SQL Server ネットワークの構成]をダブルクリックして展開し 、[SQLEXPRESSのプロトコル]をクリックします。
「Sql Server Configuration Manager」画面の右ペインから[TCP/IP]を右クリックして[プロパティ]をクリックします。
「TCP/IPのプロパティ」画面が表示されるので、[IP アドレス]タブをアクティブにします。
一番下にある[IPALL]の[TCP ポート]に「1433」を入力し、[TCP 動的ポート]に設定されている値を削除して[OK]ボタンをクリックします。
以下のメッセージが表示されるので[OK]をクリックします。
「Sql Server Configuration Manager」画面に戻るので、[SQL Server のサービス]をクリックし、[SQL Server(SQLEXPRESS)を右クリックしてショートカットメニューから[再起動]をクリックします。
SQL Serverが正常に再起動されるのを確認します。
以上で設定は完了ですが、動的ポートから静的ポートに変更したので「SQL Server Browser サービス」が必要なくなります。
以下の手順で「SQL Server Browser サービス」の設定を変更して停止、無効化してください。
SQL Server Browser サービスの停止/無効化
Windowsの[スタート]ボタンを右クリック(もしくは[Ctrl]+[Windows]キー)して[ファイル名を指定して実行]をクリックします。
「ファイル名を指定して実行」ダイアログボックスが表示されるので、[名前]ボックスに「services.msc」と入力し、[OK]ボタンをクリックします。
「サービス」画面が表示されるので、[サービス(ローカル)]の一覧から[SQL Server Browser ]をダブルクリックします。
「SQL Server Browser のプロパティ」ダイアログボックスが表示されるので、[スタートアップの種類]を「自動」から「無効」に変更し、「サービスの状態」にある[停止]ボタンをクリックします。
「SQL Server Browser サービス」の「サービスの状態」が「停止」になったのを確認し、[OK]をクリックします。
「サービス」画面に戻るので「SQL Server Browser サービス」が停止状態、[スタートアップの種類]が「無効」になっていることを確認して[X]ボタンで閉じてもらってよいです。
以上で対処は完了です。
まとめ
ちょっと前まで接続できてた「SQL Server」が接続できなくなった原因と対処方法について記載しました。
アンチウイルスをインストールすると今まで有効だった通信がブロックされるようになったりするので、インストール後は基本的な接続確認はしないとだめですね。反省。
コメント
Windowsのアップデートを久しぶりに行ったら SQL Serverに接続できなくなりました。こちらのページが一番上の方にヒットしましたので、私のケースをコメントしておきます。
原因は、ネットワーークの共有オプションが WindowsUpdateを行うとパブリックに変わってしまうことでした。SQL SERVERのポート1433はプライベートしか開放していなかった為、ネットワークがパブリックに変わってしまうとファイヤーウォールでブロックされてしまっていたということです。これはネットワークアダプタを wifi等に変更したりする場合でも有りますね。デフォルトがパブリックなんでしょうかね?
ちなみに SQL Server Browserですが、これを無効にしたところ、市販のアプリで使用している方の SQL Serverが市販アプリから接続ができなくなりました。市販のアプリは動的ポート使ったりしているので注意ですね。
akbさん、コメント、貴重な情報ありがとうございます。
そのようなケースが有ることを初めて知りました。
記事に追加したいと思います。