SQL Serverにクライアント端末からリモート接続しようとした際に「SQL Server が存在しないか、アクセスが拒否されました。」などのメッセージが表示されて接続できない場合の確認点と対処方法について紹介します。
インストール時の指定について
対処方法は、SQL Serverをインストールした際に「規定のインスタンス」としてインストールしたか、「名前付きインスタンス」を指定したかで対処方法が異なります。
ちなみに「規定のインスタンス」でインストールした場合は、接続時に指定するSQL Server名はSQL Serverをインストールしたサーバー名そのものとなりますが、「名前付きインスタンス」を指定した場合は「サーバー名\インスタンス名」になります。
どちらでインストールした場合でも必要な設定を「(共通)」と記載します。
「規定のインスタンス」と「名前付きインスタンス」でインストールした場合の違い
あまり詳しくないですが、SQL Server との通信に静的ポート「1433」を使うか動的ポートにするかぐらいだと思われます。
1台のサーバーでSQL Serverのインスタンスを複数使い分けたいのであれば、2つ目のインスタンスは必然的に「名前付きインスタンス」になります。
特に機能的な差や制限はないように思えます。
発生するエラーについて
クライアント端末からSQL Server Management Studioからリモート接続しようとしたときやODBCドライバ、OLE DBプロバイダーなどを使用してプログラムからSQL Serverに接続しようとした際に以下のようなメッセージが表示されます。
「SQL Server が存在しないか、アクセスが拒否されました。」
リモート接続の許可(共通)
デフォルトではリモート接続の許可はチェックが付いており、通常は問題ないはずですが念のため以下の確認をしてください。
SQL Serverがインストールされたサーバーで「Microsoft SQL Server Management Studio」を起動し、SQL Serverに接続します。(ローカル接続)
「Microsoft SQL Server Management Studio」の左ペインのツリーの最上位のサーバー名を右クリックし、[プロパティ]をクリックします。
[サーバーのプロパティ]画面が表示されるので、[ページ選択」の一覧から[接続]をクリックします。
画面中央下に[このサーバーへのリモート接続を許可する]チェックボックスがオンになっていることを確認してください。
SQL Server構成マネージャのTCP/IPの有効化とポート確認(共通)
[スタートメニュー]から[Microsoft SQL Server 2019] > [構成ツール] > [SQL Server 2019 構成マネージャ]をクリックし、「SQL Server 構成マネージャ」を起動します。
※SQL Serverのバージョンによっては[構成ツール]メニューがなく、[Microsoft SQL Server XXXX]メニュー内にある場合があります。
「Sql Server Configuration Manager」画面が表示されるので、[SQL Server ネットワークの構成]をダブルクリックして展開し 、[SQLEXPRESSのプロトコル]をクリックします。(製品版はMSSQLSERVER)
「Sql Server Configuration Manager」画面の右ペインから[TCP/IP]をダブルクリックします。
[TCP/IPのプロパティ]画面が表示されるので、[プロトコル]タブの[有効]ドロップダウンリストが[いいえ]になっていたら[はい]を選択します。
[OK]をクリックして[TCP/IP]画面を閉じます。
名前付きパイプの有効化
「名前付きインスタンス」でインストールした場合は、以下の手順でTCP/IPのほかに「名前付きパイプ」も有効化してください。
「Sql Server Configuration Manager」画面の[SQL Server ネットワークの構成]から[SQLEXPRESSのプロトコル]をクリックし(製品版はMSSQLSERVER)、「Sql Server Configuration Manager」画面の右ペインから[名前付きパイプ]をダブルクリックします。
「名前付きパイプのプロパティ」画面が表示されるので、[有効]ドロップダウンリストが[いいえ]になっていたら[はい]を選択し、[OK]をクリックします。
SQL Serverの再起動(共通)
[SQLEXPRESSのプロトコル]の設定を変更した際には、SQL Serverの再起動が必要となりますので、以下の手順でSQL Serverを再起動します。
「Sql Server Configuration Manager」画面の左ペインから[SQL Serverのサービス]をクリックし、右ペインに表示された[SQL Server(SQLEXPRESS)]を右クリックし[再起動]をクリックします。
SQL Serverが再起動されるので、再起動が完了するまで待ちます。
「規定のインスタンス」でインストールした場合は、この時点でクライアント端末からリモート接続できるか確認してください。
接続できるようになったのであれば、以降の手順は不要です。
もしまだ接続できない場合は、「Firewallのポート設定」に進んでください。
SQL Browser Service の設定と起動
「規定のインスタンス」でインストールした場合は不要です。
「名前付きインスタンス」でインストールした場合のみ実施してください。
[スタート]ボタンを右クリックし、[ファイル名を指定して実行]をクリックします。
[ファイル名を指定して実行」ダイアログボックスの[名前]ボックスに"services.msc"と入力し、[OK]をクリックします。
「サービス」画面が表示されるので、[SQL Browser Service]をダブルクリックします。
「SQL Server Browser のプロパティ」画面が表示されるので、[スタートアップの種類]を"無効"から"自動"に変更し[適用]ボタンをクリックします。
「サービスの状態」が"停止"となっているはずなので、[開始]ボタンをクリックします。
「サービスの状態」が"実行中"になったことを確認したら[OK]ボタンをクリックして画面を閉じます。
「サービス」画面も[X]ボタンで閉じてください。
SQL Server Browser Serviceについて
SQL Serverを「名前付きインスタンス」でインストールすると、通信ポートが動的ポートとなります。
「名前つきインスタンス」の場合、SQL Server起動時にポート番号が動的(一定ではない)に割り当てられるので、動的ポートを管理してクライアントと通信するためにSQL Server Browser Serviceが必要となります。
Firewallのポート設定(共通)
クライアント端末の「設定」画面を表示して[更新とセキュリティ]をクリックします。
「設定」画面の左メニューから[Windows セキュリティ]をクリックします。
「保護の領域」から[ファイアウォールとネットワーク保護]をクリックします。
「ファイアウォールとネットワーク保護」画面の下にある[詳細設定]をクリックします。
「セキュリティが強化されたWindows Defender ファイアウォール」画面が表示されます。
「セキュリティが強化されたWindows Defender ファイアウォール」画面右ペインから[受信の規則]を選択し、左ペインから[新しい規則]をクリックします。
「新規の受信の規則ウィザード」が開始されるので、[ポート]のオプションをオンにして[次へ]をクリックします。
「プロトコルおよびポート」画面で[TCP]オプションをオンにし、[特定のローカルポート]をオン、ポート番号として「1433」を入力して[次へ]をクリックします。
「操作」画面で[接続を許可する]オプションをオンにし、[次へ]をクリックします。
「プロファイル」画面で作成した規則を適用するネットワークのチェックボックスをオンにして[次へ]をクリックします。
※わからなければとりあえずすべてチェックをオンにしてください。
「名前」画面の[名前]ボックスに任意の名前を入力して[完了]をクリックします。
以下のように作成したルールが追加されていればOKです。
ポート1434の許可設定
「名前付きインスタンス」でインストールした場合のみ「SQL Server Browser Service」が使用するポート番号「1434」の通信許可のルールを作成します。
同様に「セキュリティが強化されたWindows Defender ファイアウォール」画面右ペインから[受信の規則]を選択し、左ペインから[新しい規則]をクリックします。
「規則の種類」で[ポート]のチェックボックスをオンにし[次へ]をクリックします。
「プロトコルおよびポート」画面で[UDP](先程は「TCP」を選択しましたが、今回は「UDP」)のチェックボックスをオン、[特定のローカルポート]のチェックボックスをオンにしてポート番号に「1434」を入力して[次へ]をクリックします。
「操作」画面で[接続を許可する]のチェックボックスをオンにして[次へ]をクリックします。
「プロファイル」画面で作成した規則を適用するネットワークのチェックボックスをオンにして[次へ]をクリックします。
※わからなければとりあえずすべてチェックをオンにしてください。
「名前」画面の[名前]ボックスに任意の名前を入力して[完了]をクリックします。
以上でSQL Serverにリモートで接続するためのすべての設定が完了しました。
クライアント端末からSQL Serverに接続できるか確認してください。
それでも接続できない
ここまでの設定を行っても接続できない場合はもっと別の原因があるかもしれません。
以下の記事も参考にして下さい。
まとめ
SQL Serverにクライアント端末などからリモートで接続する場合、インストール形式によって設定内容が少し異なることに注意してください。
大雑把に説明すると以下のとおりです。
「規定のインスタンス」でインストール
- SQL Serverのサーバー設定でリモート接続を許可
- 「SQL Server 構成マネージャ」でSQL Serverのプロトコルで[TCP/IP]を有効化
- 必要ならFirewallでTCP「1433」ポートの通信を許可するルールを追加
「名前付きインスタンス」でインストール
- SQL Serverのサーバー設定でリモート接続を許可
- 「SQL Server 構成マネージャ」でSQL Serverのプロトコルで[TCP/IP]を有効化
- 「SQL Server 構成マネージャ」でSQL Serverのプロトコルで[名前付きパイプ]を有効化
- SQL Server Browser サービスの設定変更と起動
- 必要ならFirewallでUDP「1434」ポートの通信を許可するルールを追加
コメント
名前付きインスタンスでインストールした場合の対処も書いてあって非常に有益でした。
ありがとうございました。
てつやさん、コメントありがとうございます。
お役に立てて良かったです。