(1) 記事の目的
(1-1) エラー概要
(1-2) エラー原因
(1-3) エラー対策
(1-3-1) SQLServer:リモート接続を有効化
(1-3-2) SQLServer:TCP/IP接続を有効化
(1-3-3) Firewall:ファイアウォール設定(ポート許可)
(1-3-4) サービス:SQLServerサービスの起動
(1-3-5) その他:接続のIPアドレスは「-」区切りになっていないか?
(2) XXXX
(2-1) XXXX
(2-2) XXXX
(2-3) XXXX
(2-4) XXXX
(1) 記事の目的
(1-1) エラー概要
C#のプログラムから、別サーバにあるデータベース(SQLServer)に接続する際に以下のエラーが出ました。
System.Data.SqlClient.SqlException HResult=0x80131904 Message=A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
(図111)①
(図111)②
(1-2) エラー原因
SQLServerをリモートから接続可能にするための設定項目はいくつかありますが、原因を特定するにはそれらを1つ1つ確認していく必要があります。
次の表は考えられる代表的な原因ですが、次の(1-3)ではこの各項目を見ていきます。
(表)リモート接続に必要な設定
設定箇所 | 設定内容 |
SQLServer | データベースへのリモート接続を有効化 |
SQLServer | プロトコル設定で「TCP/IP接続」を有効化 |
ファイアウォール | ファイアウォール設定(ポート許可) |
サービス | SQL Serverサービスの起動(SQL Server) |
(1-3) エラー対策
(1-3-1) SQLServer:リモート接続を有効化
a
(図131)①
スタートメニューから「Microsoft SQL Server Management Studio」を開きます。
(図131)②
サーバー名や認証情報を入力して接続します。
(図131)③
サーバ名を右クリックして「プロパティ」を選択します。
(図131)④
(1)「サーバーのプロパティ」画面の左ペインの「接続」タブを開きます。
(2)「このサーバへのリモート接続を許可する」にチェックを入れます。
(1-3-2) SQLServer:TCP/IP接続を有効化
(図132)①
スタートメニューから「SQL Server YYYY 構成マネージャー」を開きます。
(図132)②
左ペインの「SQL Serverのネットワーク構成」配下のうち、変更したいインスタンスのプロトコルを選択します(下記例ではMSSQLSERVER)。選択したら右ペインの「TCP/IP」の設定を右クリックで「有効」に変更します。
(1-3-3) Firewall:ファイアウォール設定(ポート許可)
(図133)①
スタートメニューから「Windows ファイアウォール」を開きます。
(図133)②
左ペインの「詳細設定」をクリックします。
(図133)③
左ペインで「受信の規則」を選択し、右ペインの「新しい規則」を選択する事で「許可するポート」を新規に追加していきます。
(図133)④
規則の種類は「ポート」を選択します。
(図133)⑤
TCPを選択してポート番号はSQLServerのTCP用の標準ポート番号「1433」を許可対象として入力します。
(図133)⑥
「接続を許可する」をチェックして「次へ」を押下。
(図133)⑦:デフォルトのまま次へ
(図133)⑧
パケットフィルタリングの名前を入力します。
(図133)⑨
受信規則のレコードが追加された事を確認します。
(1-3-4) サービス:SQLServerサービスの起動
(図134)
スタートメニューから「サービス」を開きます。
(図134)②
SQLServerのサービス「SQL Server ([インスタンス名])」を起動します。
(1-3-5) その他:接続のIPアドレスは「-」区切りになっていないか?
私が失敗した部分です。IPアドレスは常識的にドット「.」区切りですが、私がサーバのローカルにSSMSをインストールした際のデフォルトはハイフン区切りになっていました(NNN-NNN-NNN-NNNのような、IPアドレスに見えるサーバ名)。私はリモートで接続する際にも無意識にこの形式で入力しており、冒頭のエラーを喰らっていました・・。よくよく考えれば当たり前ですが、上記をやってもダメな場合は落ち着いてこういった箇所も疑ってみます。
(図135)