「名前付きパイププロバイダー、エラー40-SQL Serverへの接続を開けませんでした」というエラーを修正するにはどうすればよいですか?


152

サイトからデータベースに接続できないようです。私はこのエラーを受け取ります:

名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした

接続にローカルIPアドレスとパブリックIPアドレスを使用してみました。私はもう試した:

  1. はい、サイトはサーバーと通信できます
  2. 名前付きパイプ/ TCPが有効になっています。
  3. リモート接続が許可されます。
  4. Windowsファイアウォールはオフです
  5. Windowsファイアウォールでポート1433の例外を作成しました。
  6. SQL Server構成マネージャーですべてを有効にしました。

ここで他に何ができますか?


2
SQL Serverが実際にポート1433を使用しているかどうかを確認することは価値があります。デフォルトのポート以外のものを使用している可能性があります。
Rajeev Shenoy

また、pingを実行するときに、サーバー名が正しく設定されている(または適切に記述されている)ことを確認してください。これは私の場合の問題でした!
Yann Chabot 2017

@RajeevShenoy:接続なしで問題を特定するにはどうすればよいですか?接続中に、netstatを使用してポートを確認できますが、これは接続がある場合にのみ機能します。
MSIS

回答:


117

この問題の解決は非常に簡単です。

  1. コントロールパネルに移動します。
  2. サービスを検索します。
  3. 検索結果からローカルサービスウィンドウを開く
  4. MSSQLSERVERサービスを再起動します。

手順のスクリーンショット:

手順のスクリーンショット


1
すごい、自動に設定されていてもManagement Studioはサービスを開始しませんThanks
johnny 5

おかげで、助けになりました。毎回ここからサービスを開始する必要がありますか?以前は必要ありませんでした。
naz786

3
このサービスがない場合はどうなりますか?SQL Server 17をインストールしました。このサービスが表示されません...
Ciaran Gallagher

1
170GBのデータベースバックアップを作成すると、サービスが停止しました。このおかげで、重要なクライアントが使用していたSQLサーバーを再起動するのに5分しかかかりませんでした。どうもありがとうございました。
ソンデスリッチ2018

2
すべてのアクションがチェックされましたが、再起動が機能しませんでした。それでも同じエラーが発生します。
JayPex

89

そして最も簡単な解決策-あなたのスラッシュが戻っているかどうかを確認してください...

私はと間違っているかを把握しようとしている時間ほど過ごし、SERVER / INSTANCENAMEすべてが、正しく名前付きパイプ、ユーザのアクセス権を設定されている場合...そして突然、それが私を襲った、それはそれはだ、スラッシュではありませんバックスラッシュ\)。

恐怖、恥...


2
OPに問題があり、SERVER / INSTANCENAME情報がないことがわかりました(代わりにドットがありました)。
LuxDie 2016年

@LuxDie SERVER \ INSTANCENAMEはどこにあり、どこにありますか?
tom_mai78101 2017年

これが鍵です。サーバーのインスタンスでホストされている「データベース」に接続する必要があることを忘れないでください。このエラーは、接続にサーバーのホスト名のみを使用し、インスタンス名をデータベースとして使用しようとした場合、またはその逆の場合に発生します。
MichaelHuelsen

私の問題を解決しました。機能する接続文字列:Server=MyServerName\DOLPHIN=Trusted_Connection=True;Database=DolphinPlatform開発中(C#)、ローカルにインストールされたMSSQL 2017サーバーに接続していましたが、展開しようとすると、ソフトウェアベンダーによってインストールされたリモートサーバーがとして実行されていましたInstance。これが見つかるまで、それがサービスまたは何かとして実行されていたため、認証の問題であると考え続けました。
アラン

49

これは、SQL Serverをインストールした後の3つのステップのプロセスです。

  1. 名前付きパイプを有効にするSQL Config Manager-> SQL Server Network Consif-> Protocols-> Named Pipes->右クリック->再起動

名前付きパイプが有効

  1. サーバーを再起動しますSQL Config Manager-> SQL Serverサービス-> SQL Server(SQLEXPRESS)->右クリック->再起動

  2. 適切なサーバー名とインスタンス名を使用します(両方が必要です!)通常、これは。\ SQLEXPRESSです。たとえば、QueryExpress接続ダイアログのスクリーンショットを参照してください。

ここに画像の説明を入力してください

そこにあります。


高得点の回答が比較的遅いため。それは何ですか、SQLサーバーと正常に通信するサービスがあり、その実行から3時間後に、このエラーが発生し始め、10分ほど続きます。その後、サービスはエラーの前と同じように実行を続けます。???
TS

これはローカル接続用ですか?ネットワークを介したリモート接続が機能するには、さらに何が必要ですか?
キサキ

19

SQL SERVER 2012開発者をインストールしたところです。最初のSSISパッケージを作成していたときに、SQL Server 2012データツールの[接続マネージャー]ボックスでデータ接続タスクを作成しようとすると、このパイプエラーが発生しました。上記の投稿を利用して解決しました。

名前付きインスタンスを選択し、名前付きインスタンスをSSQDatabase1と呼び、PCの名前がPCX1である場合。SSQDatabase1だけでなくPCX1 \ SSQDatabase1を入力する必要があります。そうしないと、名前付きパイプエラーが発生します。


16

MSDN Socialのスレッド、Re:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした。エラーに関連する可能性のある問題のかなり適切なリストがあります。それらのいずれかが現在発生しているものであるかどうかを確認する必要がある場合があります。

  • SqlExpressの使用などの不正な接続文字列
  • 名前付きパイプ(NP)がSQLインスタンスで有効になっていませんでした
  • リモート接続が有効になっていませんでした
  • サーバーが起動していないか、接続文字列で実際のサーバーではないことを示しています
  • 不適切なセキュリティコンテキストなどの他の理由
  • 作業している2つのマシン間の基本的な接続テストを試す

残念ながらそれらを通過しましたが、それは助けにはなりませんでした。:(
ダミアン

4
わかりました、これを理解してください。結局のところ、サーバーをインストールしたときに、名前付きインスタンスを作成しました。デフォルトのインスタンスと同じ方法で名前付きインスタンスに接続することはできません。したがって、データソース:機能するインスタンスのlocalhost \ name。それでもIPアドレスではうまくいかなかったが、ようやく接続できてよかった。
Damien

聞いてうれしいですが、好奇心からあなたはそれを使ってそれに接続できますip.ip.ip.ip/NamedInstanceか?
カーン


7

使用サーバ\\ INSTANCE NAME .Usingは私のプロジェクトにおける二重のバックスラッシュは私の問題を解決しました。


これも私にとってはうまくいきましたが、これがうまくいった理由を誰かに教えてもらえますか?
GWR 2016

文字列はエスケープすると思いますが、状況によって異なります
水樹なかしゅ2016年

その文字列がC#コード内にある@"server\instance"場合、または"server\\instance"機能する場合。構成ファイルにある場合は、プレーンテキストのserver \ instanceが必要です。
Denise Skidmore、

7

ダミアンのおかげで...

TCP / IP名前付きパイプ...両方が有効

Web構成....(ローカルホスト用)

<add name="FooData" connectionString="Data Source=localhost\InstanceName;Initial Catalog=DatabaseName;Integrated Security=True;" providerName="System.Data.SqlClient" />

5

同じ問題がありましたか?一部のサーバーを移行する必要があったとき、6時間のように費やしました。このトピックやその他で利用可能なすべての提案を試してみました。

ソリューションはサーバーの再起動と同じくらい簡単でした!


1
悲しいことに、サーバーをリセットすると問題も解決しました。言及された他のすべての提案は、役に立たないように試みられました。
MrShmee

3

私の場合、スタンドアロンサーバーがあり、構成マネージャーのSQLサーバーポートのデフォルトポート1433をいくつかの番号に変更し、SQLサーバーサービスを再起動して有効にしました。ログインした場合、Management Studioを介してSQLサーバーに接続できました。サーバーへ。しかし、SQLサーバー経由でローカルマシンから接続できませんでした。エラーが発生しました。

SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいことを確認し、

SQL Serverがリモート接続を許可するように構成されている。(プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした)(Microsoft SQL Server、エラー:5)

以下をすべて確認して確認しました

-名前付きパイプ/ TCPが有効になっています。-リモート接続が許可されます。-Windowsファイアウォールがオフ-Windowsファイアウォールのポートの例外を作成しました(サーバーが同じサブネットネットワークにあるため、私の場合は必要ありませんでした)。-SQL Server構成マネージャーですべてを有効にしました。

次に、ポート番号をデフォルトの1433に変更してsqlサーバーサービスを再起動しました。問題が解決され、ローカル管理スタジオからsqlサーバーに接続できました。


3

同じ問題がありました。私はMSSQL Server Management Studio 2017を使用しており、次の手順でこの問題を解決しました:

  1. SQL Serverサービスサービスが正常に機能しているかどうかを確認します。
  2. また、SQL Server(MSSQLSERVER)が良好な状態で動作することを確認してください。
  3. また、SQL Server Browserが正常に機能することを確認してください。
  4. SQL Server(MSSQLSERVER)を再起動します。

そしてそれを修正しました。


3
これをありがとう!SQL Server Browserが無効になっているため、これで修正されました!
サム

2

次の手順を試してください。

  1. 「サービス」ウィンドウを開きます(「実行ボックス」を開き、services.mscと入力します)。

  2. SQLサービスを探します(SQLプレフィックス付き)。

  3. それらを開始します(開始できない場合。ステップ4に進みます)。

  4. 各サービスを右クリック-> [プロパティ]-> [ログオン]タブに変更-> [ローカル...]としてログオンを選択-> 0K。次に、SQLサービスを再起動します。

Open SQLを試して、データベースに接続してください。


2

ほとんどの場合、DB名が正しくないことがわかります。VSには「DESKTOP-0I14BKI」のようなサーバー名が表示されますが、SSMSを開くとDESKTOP-0I14BKI \ SQLBLAHBLAHが表示されます。単に「\ SQLBLAHBLAH」(インスタンス名)VS接続プロパティの「サーバー名」に。

表示されますここに画像の説明を入力してください

修正するには: ここに画像の説明を入力してください


2

TL; DR; SQL Serverインスタンスが、動作していない動的ポートを使用しています。SQL Serverで静的ポート#1433を使用するように強制します。

完全な詳細:まず、この問題は、デフォルトと名前付きインスタンスの組み合わせ、または名前付きインスタンスのみ(私の場合)の場合に発生する可能性が高くなります。

重要な概念:コンピューターにインストールされているMicrosoft SQL Serverの各インスタンスは、異なるポートを使用して着信接続要求をリッスンします。SQL Serverのデフォルトインスタンスはポート#1433を使用します。名前付きインスタンスをインストールすると、名前付きSQL Serverインスタンスに対応するWindowsサービスの起動時に決定される動的ポートの使用が開始されます。

VMにある名前付きの唯一のSQL Serverインスタンスへの接続に失敗しました(エラーコード40)。以下の可能な解決策を試すことができます:

解決策1:SQL Serverインスタンスに接続しようとするクライアントコードは、SQL Serverブラウザーサービスの助けを借りて、名前付きインスタンスが着信接続をリッスンしているポート番号を把握します。コンピューターでSQLブラウザーサービスが実行されていることを確認します。

解決策2:下のスナップショットに示すように、名前付きSQL ServerインスタンスがSQL Server構成マネージャーから使用しているポート番号(黄色)を確認します。

ここに画像の説明を入力してください

接続文字列で明示的にそのポート番号を使用するか、sqlcmd以下に示します。

sqlcmd -s mymachinename,11380 -i deleteDB.sql -o SQLDelete.txt

解決策3:デフォルトのインスタンスで使用されるポート#1433を使用するように名前付きインスタンスを強制します。これは、デフォルトのSQL Serverインスタンスがポート#1433をすでに使用しているため、コンピューターにデフォルトのSQL Serverインスタンスがない場合にのみ機能することに注意してください。同じポート番号を2つの異なるWindowsサービスで使用することはできません。

TCP Dynamic portsフィールドを空白に、TCP Portフィールドを1433にマークします。

ここに画像の説明を入力してください

以下に示すように、接続文字列のポート番号を変更します。

sqlcmd -s mymachinename\instanceName -i deleteDB.sql -o SQLDelete.txt

または

sqlcmd -s mymachinename,1433 -i deleteDB.sql -o SQLDelete.txt

:TCP / IP設定を変更するたびに、対応するWindowsサービスを再起動する必要があります。

興味深いことに、動的ポート設定に戻って同じエラーを再現したときにエラーを解決した後、それは起こりませんでした。なぜだかわかりません。

SQL Serverの動的ポートの詳細については、以下の興味深いスレッドをお読みください。

複数のインスタンスでSQL Serverポートを構成する方法

動的ポートはいつ「動的」ですか?

いつTCP動的ポートを使用し、いつTCPポートを使用しますか?

このブログから私の問題の解決につながりました。


1

私の場合、SQL Server Management Studioを開き、データベースエンジンでSQLEXPRESSを検索しました。2つのインスタンスがあり、正しいインスタンスを選択しました。

ここに画像の説明を入力してください


1

Asp.netコアで作業していて、appsettings.jsonを使用している場合は、サーバーをlocalhostとして書き込み、この後に有効な名前付きパイプのSQLインスタンス名を書き込みます

  "ConnectionString": {
    "dewDB": "server=localhost\\dewelopersql;database=dewdb;User ID=sa;password=XXXXX",
  },


1

MSSQLSERVERサービスを再起動しようとしても機能しない場合は、これが解決策である可能性があります。

SQLExpressを使用している場合、サーバー名は次のComputerName \ SQLExpressのようになります。ただし、SQLDeveloperの場合、ComputerNameの後にSQLDeveloperを指定する必要はありません。


0

ここに記載されているすべての手順を実行しても接続されない場合は、etcフォルダーのhostsファイルにIPアドレスを使用してDNSを追加してみてください。接続文字列にDNS名の代わりにIPアドレスを追加することは、接続が実際に機能するかどうかを確認するための一時的な解決策です。


0

接続にローカルIPアドレスとパブリックIPアドレスを使用してみました。私はもう試した:

はい、サイトはサーバーと通信できます名前付きパイプ/ TCPが有効になっています。リモート接続が許可されます。WindowsファイアウォールがオフになっているWindowsファイアウォールでポート1433の例外が作成されました。SQL Server構成マネージャーですべてを有効にしました。

上記のことも確認して実行しました。DOUBLEBACKSLASHを共有したいと思います。

oBuilder.DataSource = "SPECIFICPCNAME \ SQLEXPRESS";

シングルバックスラッシュを使用すると、ビルドエラーが発生しました。つまり、エラー1認識されないエスケープシーケンスです。

これが次の人に役立つことを願っています-私はディナー、真夜中のスナックを犠牲にしました、そしてNBAはこれを解決する時間を強調しています(恥)

[Tamizh venthan]のおかげで^ _ ^


0

[コンピュータの管理]-> [SQLとサービス]に移動して、TCP / Ip、パイププロトコルを有効にし、サービスがオンになっていることを確認します。ファイアウォールのポートを拡張します。コマンドプロンプトから管理者としてログインを試みます。最後に、ユーザー名は(local)\ SQLEXPRESSである必要があります。お役に立てれば。


0

SQL Server構成マネージャーを開く

  1. 右からSQL Serverサービスを選択します。
  2. 右からサーバーを見つけて、そのプロパティに移動します(右クリックで)
  3. ログオン方法をローカルシステムに変更します。

ここに画像の説明を入力してください

ここに画像の説明を入力してください


0

同じ問題があり、ファイアウォール(ESET)を無効にすることで問題を解決しました。

この問題を解決する最初のステップは、別のコンピューターから自分のコンピューターにpingを実行することです。ファイアウォールがオンになっていると、自分自身にpingできない場合があります。自分のPCにpingを実行しようとしたが、pingが失敗した(サーバーからの応答が得られなかった)


0

問題を解決するための手順を以下に示しました。「名前付きパイププロバイダー、エラー40-「SQL Serverへの接続を開けませんでした」というエラーを修正する方法

  1. SQL Serverサービスサービスが正常に機能しているかどうかを確認します
  2. また、SQL Server(MSSQLSERVER)が良好な状態で動作することを確認してください。
  3. また、SQL Server Browserが正常に機能することを確認してください。
  4. 以前のすべてのエイリアスを削除、要件に応じて新しいエイリアスを作成します。
  5. 次に、SQL Serverのデフォルトポート1433の動作を確認します。
  6. 次に、インスタンスのクライアントプロトコルをクリックし、次にTCP / IPをクリックし、マウスを右クリックしてプロパティを開きます。ここで、デフォルトポートSQL 1433が正常に機能していることを確認でき ます
  7. SQL Server Management Studioを開き、右クリックして[ プロパティ ]オプションをクリックし、[ 接続 ]タブをクリックして、最後に[このサーバーへのリモート接続を許可する ]をクリックします。
  8. 正しく機能するか、Ping IPホストを確認します。

0

VS2015で新しい接続を追加しようとしました。ここでの提案はどれもうまくいきませんでした。ウィザードのある種のバグを疑っています。特にSSMSはうまく接続できたので、私はそれをだまして試すことにしました。出来た!

  1. 接続を追加する代わりに、「新しいSQL Serverデータベースの作成」を使用してください。サーバー名と新しいDBのランダムな名前を入力します(例: "test")。

  2. これが成功した場合、VSでサーバーエクスプローラーを開き、データ接続で接続を見つけて右クリックし、[接続の変更]を選択します。

  3. 「test」を(ステップ1から)接続する既存のデータベースの名前に変更します。「テスト接続」をクリックします。今回はうまくいくはずです!

  4. 手順1で作成した一時データベースを削除します。


0

もう1つの解決策があると思います。最近コンピュータ名を変更したので、上記の方法をすべて試しても接続できない。サーバー名を変更しました。サーバー名=>(詳細は参照)=>データベースエンジンで、新しいサーバーがコンピューターの新しい名前と同じであることがわかりました。これはうまくいきました、そして人生は再び良いです。


0

私は自分のエラーに気付く前に、これについて長い間苦労していました-接続文字列でセミコロンの代わりにカンマを使用していました


0

私はこの問題を抱えていましたが、上記の提案のどれもそれを修正しませんでした。

WebサイトをIISに展開したときに、この問題が発生しました。修正は、デフォルトのアプリプールに対して詳細設定を行い、IDプロパティをデフォルトから管理者に変更することでした。


0

私にとってはファイアウォールの問題でした。

最初にポート(1444や1434など)を追加する必要がありますが、

C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

そして

%ProgramFiles%\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Binn\SQLAGENT.EXE

2回目にこの問題が発生したのは、ファイアウォールに戻ったとき、パスが正しくなく、フォーム12を13に更新する必要があったからです。[プログラムとサービス]タブの[参照]をクリックするだけで、これを実現できました。

最後に、コマンドを実行してみてください

EXEC xp_readerrorlog 0,1、 "サービスプリンシパル名を登録できませんでした"、Null

私にとって、それはエラーの理由を返しました


0

私はこのページでほとんどすべてを試しましたが、実際に解決する必要があるものであるいくつかの根本的な問題がありました。SQL Server構成マネージャーを開くなどの特定の操作を実行できませんでしたが、WMIプロバイダーファイルが破損しているか、見つかりませんでした。

私が読んだ内容に応じて、この問題を解決するための退屈な方法はたくさんありますが、tweaking.comのツールは、WMI(Windows Management Instrumentation)プロバイダーファイルを削除および置換/修復することができました。

以前はコンピューターの修復を行っていましたが、全体的にtweaking.comツールに本当に感銘を受け、アクセスしたWMIエラーフォーラムページの1つから提案されました。

この問題を修正した後、SQLデータベースにローカルとリモートの両方で接続できました。

これが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.