Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

C#

C#のDB接続時のエラー(provider: Named Pipes Provider, error: 40 – Could not open a connection to SQL Server)

投稿日:2020年9月15日 更新日:

<目次>

(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)

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-C#

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ASP.NET MVC(C#)でHelloWorldする手順

<目次> (1) ASP.NET MVC(C#)でHelloWorldする手順  (1-1) プロジェクトの作成  (1-2) Controller(コントローラー)の作成  (1-3) Veiw(ビ …

C#のvarとは?型を調べる方法や制約事項についてもご紹介

<目次> (1) C#のvarとは?型を調べる方法や制約事項についてもご紹介  (1-1) C#のvarとは?  (1-2) サンプルプログラム:varの基本動作確認#1  (1-3) サンプルプログ …

C#で見るgetやsetとは?プロパティの基礎についてご紹介

<目次> (1) C#で見るgetやsetとは?プロパティの基礎についてご紹介  (1-1) プロパティとは?  (1-2) プロパティの構文  (1-3) サンプルプログラム  (1-4) プロパテ …

C#で型をStringからintに変更する方法~TryParseメソッドによる型変換~

<目次> (1) C#で型をStringからintに変更する方法  (1-1) 構文  (1-2) サンプルプログラム  (1-3) プログラム補足「'{0}’や'{1}’」に …

ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld

<目次> (1) ASP.NETのMVCとは?入門者向けの概要説明やHelloWorld  (1-1) ASP.NET MVC5とは?  (1-2) MVCのアーキテクチャ概要  (1-3) ASP. …

  • English (United States)
  • 日本語
Top