web-dev-qa-db-ja.com

'Named Pipes Provider、エラー40 - ' SQL Server 'への接続を開くことができませんでした。

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

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

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

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

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

128
Damien

この問題を解決するのはとても簡単です。

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

ステップのスクリーンショット

Screenshot of the steps

104
Kazem

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

SERVER/INSTANCENAMEのすべてが正しく設定され、名前付きパイプ、ユーザーアクセス権などが正しく設定されていない場合、何が問題なのかを突き止めるのに1時間ほどかかりましたそれは私を襲いました、それはスラッシュではありません、それはバックスラッシュです(\)。

恐怖、恥….

74
mizuki nakeshu

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

  1. 名前付きパイプを有効にするSQL設定マネージャ - > SQL Serverネットワーク構成 - >プロトコル - >名前付きパイプ - >右クリック - >再起動

named pipes enabled

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

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

enter image description here

そこにあります。

38
Pompair

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

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

18
rockz1

MSDN Socialのスレッド、Re:Named Pipes Provider、エラー:40 - SQL Serverへの接続を開けませんでした、あなたのエラーに関連する可能性のある問題のかなりまともなリストがあります。あなたはそれらのうちのどれかがあなたが経験しているものであるかもしれないかどうか見ることを望むかもしれません。

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

私はちょうどTCP/IP、VIA、SQL Server構成マネージャで名前付きパイプを有効にしました、私の問題は解決しました詳細についてはこれを参照してください 名前付きパイプエラー40の解決

9
Samanth

SERVER \\ INSTANCE NAMEを使用します。私のプロジェクトでダブルバックスラッシュを使用すると、問題が解決しました。

7
Tamizh venthan

Damianに感謝します...

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

Web設定....(ローカルホスト用)

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

同じ問題がありましたか。いくつかのサーバーを移行する必要があったときに6時間ほどかかりました。このトピックや他のトピックで利用可能なすべての提案を試してみました。

解決策はサーバの再起動と同じくらい簡単でした!

5
halloweenlv

私の場合は、私はスタンドアロンサーバーを持っていた、私はいくつかの番号にSQL Serverポートのデフォルトポート1433を変更し、SQLサービスを有効にするために再起動、私はログインすれば管理スタジオを通してSQLサーバーに接続できたサーバーに。しかし、私はSQL Serverを介して私のローカルマシンから接続することができませんでした、私はエラーを得ていました:

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

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

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

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

それから私はデフォルトの1433にポート番号を変更し、SQLサーバサービスを再開しました、そして問題は解決しました、そして私は私のローカルManagement StudioからSQLサーバを接続することができます。

3
balu

私は同じ問題を抱えていました。私はMSSQL Server Management Studio 2017を使用し、次の手順でこの問題を解決しました。

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

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

3
Murat

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

  1. [サービス]ウィンドウを開きます([ファイル名を指定して実行]をクリックして、「services.msc」と入力します)。

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

  3. 起動します(起動できない場合は、手順4に進みます)。

  4. 各サービスへの右クリック - >プロパティ - >タブへの変更 "ログオン" - > "ローカル..."としてログオンを選択 - > 0K。その後、SQLサービスを再開してください。

Open SQLを試してデータベースに接続します。

1
Harry Ho

Asp.netコアを使用していて、appsettings.jsonを使用してサーバーをlocalhostのように記述し、有効な名前付きパイプのSQLインスタンス名を次のように記述した場合

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

あなたはおそらくあなたのDB名が正しくないことに気付くでしょう、あなたは "DESKTOP-0I14BKI"のようにVSでサーバ名を見るでしょうが、あなたが見るだろうSSMSを開くなら、DESKTOP-0I14BKI\SQLBLAHBLAH単にVS接続プロパティの "サーバー名"に "\ SQLBLAHBLAH"(インスタンス名)を追加するだけです。

と表示されます。enter image description here

修正すること:enter image description here

1
scott

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

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

私はコンピュータの修理をしていたし、全体的にtweaking.comツールは本当に私を感動させた、そしてそれは私が行ったWMIエラーフォーラムページの1つから示唆された。

この問題を解決した後、ローカルとリモートの両方で自分のSQLデータベースに接続することができました。

これが誰かに役立つことを願っています。

0
Elon Zito

私は自分のエラーに気づく前にこの1つの年齢のために苦労しました - 私は接続文字列でセミコロンの代わりにカンマを使用しました

0
Andy

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

0
appstauq

私はあなたの問題を解決するために以下のステップを提案しましたどのように私はエラー 'Named Pipes Provider、error 40 - ' SQL Serverへの接続を開けませんでした

  1. 正常に動作することを確認してくださいSQL Serverサービスサービスかどうか。
  2. SQL Server(MSSQLSERVER)で正常に動作することも確認してください。
  3. また、正常に動作することを確認してくださいSQL Server Browser
  4. 以前のすべてのAliasesを削除し、必要に応じて新しいエイリアスを作成します。
  5. SQL Serverのデフォルトの動作を確認します。デフォルトPort 1433
  6. 次にインスタンス内のクライアントプロトコルをクリックし、次にTCP/IPをクリックし、マウスの右ボタンをクリックしてプロパティを開きます。 portSQL 1433
  7. SQL Server Management Studioを開いて右クリックし、[Property]オプションをクリックして/をクリックします。Connectionstab、最後にこのサーバーへのリモート接続を許可するにチェックマークを付けます。
  8. 正しく動作しているか、またはPing IP Hostを確認してください。
0
Anjan Kant

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

0
VaishB

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

WebサイトをIISに展開したときにこの問題が発生していました。この問題を解決するには、デフォルトのアプリケーションプールに対して詳細設定を行い、identityプロパティをデフォルトからAdministratorに変更しました。

0
Ste Brown

非常に簡単な解決策

(local)\InstanceNameを使ってください。それは私のために働きました。

0

私は同じ問題を抱えていて、私のファイアウォール(ESET)を無効にすることによって問題を解決しました。

この問題を解決するための最初のステップは、他のコンピュータから自分のコンピュータに対してpingを実行することです。ファイアウォールがオンになっていると、自分でpingを実行できない可能性があります。私は自分のパソコンにpingを実行しようとしましたが、pingは失敗しました(サーバーからの応答がありませんでした)

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
Dave

TL; DR;あなたのSQL Serverインスタンスは、動いていない動的ポートを使用しています。 SQL Serverに静的ポート#1433を使用させる。

完全な詳細:まず第一に、デフォルトと名前付きインスタンスが混在しているか、名前付きインスタンスのみである場合(私の場合)は、この問題が起こりやすくなります。

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

私のコードは、私が自分のVMで持っていた唯一の名前付きSQL Serverインスタンスに接続するのに失敗しました(エラーコード40)。あなたは可能な解決策の下に試すことができます:

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

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

enter image description here 

そのポート番号を接続文字列で明示的に使用するか、または以下に示す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にマークします。

enter image description here 

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

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 Portを設定する方法

動的ポートはいつ「動的」になりますか。

TCP動的ポートを使用する場合とTCPポートを使用する場合

this blogから私は自分の問題を解決するための手がかりを得ました。

0
RBT

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

enter image description here

0
DivyaMenon

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

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

enter image description here

enter image description here

0
zapoo

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

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

  2. これが成功したと仮定して、VSでServer Explorerを開き、Data Connectionsで接続を見つけ、それを右クリックしてModify Connectionを選択します。

  3. (手順1の) "test"を、接続したい既存のデータベースの名前に変更します。 [接続テスト]をクリックします。今度はうまくいくはずです。

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

0
Roman Starkov

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

SQLExpressを使用している場合、サーバー名は次のComputerName\SQLExpressである必要があります。ただし、SQLDeveloperの場合、ComputerNameの後にSQLDeveloperを修正する必要はありません。

0
Asim Okby

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

0
user3307830

sQLリモート接続用にサーバーのポート番号1433を開く

0
Hamid Jolany

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

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

私は確実にして、同様に上記をしました、そして、私はちょうどダブルバックスラッシュを共有したいです

oBuilder.DataSource = "SPECIFICPCNAME\SQLEXPRESS";

SINGLE BACKSLASHを使用すると、ビルドエラーが発生しました。すなわち、エラー1認識されないエスケープシーケンス

私はこれが次の人に役立つことを願っています - 私は夕食を犠牲にしました、真夜中の軽食およびNBAはこれを解決する時間を強調します(恥)

[Tamizh venthan]に感謝します^ _ ^

0
Ronan Masangcay