「サーバーに接続できません-ネットワーク関連またはインスタンス固有のエラー」が発生するのはなぜですか?


378

SQL Serverに接続しようとすると、次のエラーが表示されます。

108.163.224.173に接続できません。

SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。

サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認してください。

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

このエラーは、Visual Studio 2010でデータベースをgridviewに構成しようとするとスローされます。このエラーをデバッグする方法がわかりません。

このエラーをどのようにデバッグしますか?エラーメッセージで言及されているものに加えて、ここで実際に何が行われているのかを判断するには、どのような手順を踏む必要がありますか?


11
SQL Serverの接続をテストする場合、pingは信頼できません。WindowsServerでは、ICMPエコー要求はデフォルトで無効になっています。無効なユーザー名またはパスワードは、エラーがまったく伝えているものではなく、まったく別のエラーです。
Sean Airey 2013

1
この記事をお試しください。接続の問題をトラブルシューティングするために必要なほとんどすべての手順を実行します。social.technet.microsoft.com
Sean Airey

3
初めて設定するときにSQL Server {バージョン} Expressでこのエラーが発生した場合は、スクリーンショットで私の回答をご覧ください。StackOverflowに戻って、私の答えを使用しました。 stackoverflow.com/questions/1391503/…–
MacGyver

localhostに接続するときに、仮想サーバーでこの問題が発生しました。OSの起動時になんらかのエラーが発生したようです。私の場合、幸いなことに、再起動ですべてが解決されました。
Qohelet 2015

今日私はこれに多くの時間を費やしましたが、最終的に私のために働いたのは:Sql Server Configuration Manager- > Protocols for <INSTANCE> -> TCP / IP- > IP Addresses(Tab)です。最後のエントリIP Allに移動し、TCPポート1433について言及します。ここで、services.mscを使用してSQL Server(INSTANCE)を再起動します。この後、問題は解決しました。
ani627 2015

回答:


301

私は次のテクニックが役に立ったと感じました:

  1. データベースエンジンがリモート接続を受け入れるように構成されていることを確認します。

    • [スタート]> [すべてのプログラム]> [SQL Server 2005]> [構成ツール]> [SQL Serverセキュリティ構成]
    • サービスと接続のセキュリティ構成をクリックします
    • 問題のあるインスタンスを選択>データベースエンジン>リモート接続
    • ローカル接続とリモート接続を有効にする
    • インスタンスを再起動
  2. ファイアウォールで、使用しているSQL Serverインスタンスとポートの例外作成する必要がある場合があります。

    • スタート>ファイル名を指定して実行> Firewall.cpl
    • 例外タブをクリックします
    • sqlservr.exe(通常はにありC:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Binます。実際のフォルダパスについてはインストールを確認してください)とポート(デフォルトは1433)を追加してください
    • 接続文字列も確認してください
  3. あなたの場合は、チェックSQL Serverサービスが起動している適切に:

    • [すべてのプログラム]> [Microsoft SQL Server 2008]> [構成ツール]> [SQL Server構成マネージャー]> [SQL Serverサービス]に移動します。
    • SQL ServerサービスのステータスがRunningであることを確認してください。

    また、リモートサーバーが同じネットワーク上にあることを確認してください。sqlcmd -Lサーバーがネットワークリストに含まれているかどうかを確認するために実行します。

  4. SQL Server構成でTCP / IP有効にする

    2つ以上のSQL Serverがネットワークを介して接続されている場合、それらはすべてTCP / IPを使用して通信を行います。SQL Serverインストールのデフォルトのポートは1433です。このポートは、SQL Server構成マネージャーを使用して変更できます。SQL Serverを接続するには、TCP / IPを有効にする必要があります。

    • [すべてのプログラム] >> [Microsoft SQL Server 2008] >> [構成ツール] >> [SQL Server構成マネージャー] >> [TCP / IPの選択]に移動します
    • TCP / IPを右クリック>>有効化をクリック

    すべての変更を有効にするには、SQL Serverサービスを再起動する必要があります。右クリックしてメニュープロパティに移動し、SQL Serverのデフォルトポートを変更できる場所を選択します。


10
SQL Server構成でTCP / IPを有効にすることは、SQL Server 2014 Expressを使用するときの解決策でした。
マイクリチャーズ

73
今日私はこれに多くの時間を費やしましたが、最終的に私のために働いたのは:Sql Server Configuration Manager- > Protocols for <INSTANCE> -> TCP / IP- > IP Addresses(Tab)です。最後のエントリIP Allに移動し、TCPポート1433について言及します。ここで、services.mscを使用してSQL Server(<INSTANCE>)を再起動します。この後、問題は解決しました!
ani627 2015

1
私もローカルSQLサーバーで特定の問題に直面しており、オペレーティングシステムのローカルサービスを確認して解決し、特定のSQLサービスを検索して1つずつ開始しました。それは完璧に働きました。
Faisal Naseer 2015年

4
私も同じ問題を抱えており、SQLサーバーにログオンして、mssqlsererサービスが停止していることを検出し、サービスを開始しました。インスタンスに接続できました
Rak

15
また 、サービスを忘れないでくださいENABLE SQL Server Browser。私の時間内にいくつかのSQLサーバーをセットアップしました...しかし、このステップには常にさまざまなシナリオが含まれているようです:)
mschr

125

私は解決策を得ました:

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

「SQL Serverネットワーク構成」をクリックし、「名前のプロトコル」をクリックします

「TCP / IP」を右クリックします(有効になっていることを確認してください)。プロパティをクリックします。

次に[IPアドレス]タブを選択し、最後のエントリ[IP All]に移動します。

"TCPポート" 1433を入力します。

ここで 「SQL Server .Name」を再起動します。"services.msc"(winKey + r)を使用

それが動作します...


これを試してみましたが、何らかの理由で、windows10の[TCP / IP]で[プロパティ]を右クリックして選択すると、ダイアログウィンドウが表示されません。ツリービューの他のノードは一般に、ダイアログをうまく表示します。誰かがこの問題とそれを乗り越えるためのアイデアを持っていますか?
Ryan Betker-healthNCode 2016年

3
SQL Server 2014では、(localdb)\ v11.0の代わりに(localdb)\ mssqllocaldbを使用
Shalva Avanashvili

67
私のクレジット(2015年2月24日-投稿の7か月前に投稿されたコメント)を回答としてコピー貼り付けしました。:P
ani627

2
これはうまくいきました。SQL Server 2016に接続できませんでした。これらの変更を行ったところ、うまくいきました。ありがとう。
Ankur 2017

1
わたしにはできる。構成マネージャーでTCP / IPと名前付きパイプを有効にした後、「service.msc」でサービスを開始する必要がありました。
Alif Noushad 2017

100

スクリーンショット付きの回答として、私の賛成投票のコメントを追加します。

私はこれに多くの時間を費やしました、最後に私のために働いたのは:

1)Sql Server構成マネージャーを開きます -> SQL Serverネットワーク構成 -> <(インスタンス)>のプロトコル -> TCP / IP(ダブルクリック)。

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

2)-> IPアドレス(タブ)を選択します。

3)最後のエントリIP Allに移動し、TCPポート1433について言及します

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

4)services.mscを押しWin+Rて入力します

5)SQL Server <(INSTANCE)>を再起動します

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

この後、問題は解決しました!



私のために働いた、SQL Express 2012
lost_in_magento 2018

TCPを有効にしてSQLサーバー2012で私のために働き、TC​​P ALLにポート番号1433を追加し、サービスを再起動しました!
Chirag Khatsuriya

さらに、ファイアウォールでTCP 1433 および UDP 1434 を許可する必要がありました
MarkusEgle

83

サービスを開いてSQL Server(Sqlexpress)サービスの実行を開始することで、この問題を解決しています。

サービスイメージ


3
SQL ServerのWindowsサービスが手動のスタートアップの種類に設定されている場所を見たので、再起動時に再起動しませんでした。自動に設定する必要があります。
robertburke 2016年

2
これはまさに私がやったことで、私のステータスはRunningで、StartupTypeはAutomaticでしたが、まだ問題に直面しているので、Runウィンドウタイプのサービスを使用してから、services.mscSQL Server(SQL EXPRESS)を右クリックしてコンテキストメニューを表示し、Stop and Start再びサービスを提供してくれて、うまくいきました。
shaijut 2016年

22

このエラーは主にSQLサービスが停止したときに発生しました。サービスを再起動する必要があります。このウィンドウに移動するには、次のようにサービスを検索する必要があります- ここに画像の説明を入力してください

次に、SQLSERVER(MSSQLSERVER)を検索し、サービスを再起動します。

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

これがうまくいくことを願っています。


18

押しwindow + R (Run window Open)て実行ウィンドウの種類"services.msc"で新しいサービスを開き、SQL Serverをインスタンス名で検索します。私の場合は、SQL SERVER(SQLEXPRESS)このサービスを開始し、もう一度試してみてください。ここに画像の説明を入力してください


答えは以前に提供されました。何らかの理由で再度投稿しないでください
Anik Saha

8
バディは同じ問題に直面していますが、ホットオープンサービスウィンドウがわからないので、方法を見つけ、人々と共有することを考えました
Hafiz Asad

ありがとう、@ HafizAsad。あなたの答えは私にとってうまくいきます。
Adnan Ahmad

@AdnanAhmadどういたしまして。感謝します。
Hafiz Asad


13

WinFormsプロジェクト(SQL Serverデータベースの操作を含み、私のPCで完全に機能する)を別のPCで実行したいときも、同じエラーが発生しました。問題は私のPCのWindowsファイアウォールにありました。2つのルールを追加してこれを解決しました。これは、Windowsファイアウォールを介してSQL Serverを許可する手順全体です。

  1. 「実行」を開いて入力 services.msc
  2. SQL Server(インスタンス名)とSQL Server Browserのサービスを見つけます。1つずつ、右クリックして[プロパティ]を選択し、exeファイルへのパスをコピーします
  3. 次に開く firewall.cpl、[アプリケーションを許可する]または[ルールを追加する]をクリックし、以前にコピーしたパスを追加し(従う必要がある手順があります)、[ドメインとプライベート]をオンにし、[パブリック]をオフにします。

これは、この手順を見ることができるYouTubeリンクです:Windowsファイアウォールを介したSQL Serverの許可


私には完璧に動作します。重要:ブラウザとサーバーをファイアウォールに追加してください!+1
BendEg 2016年

私はsqlservr.exeファイルを見つけるのに苦労していましたが、これはそれを見つけるのに役立ちました。
スタン

11

上記の解決策のいずれも機能しない場合(何も機能しなかった場合)、コンピューターを再起動すると、SQLサーバー(localhost)に接続できるようになります。


これが機能する理由は、SQL Serverをインストールしたばかりで、インストールの指示どおりにコンピューターを再起動していないためです。したがって、それを実行すると、サービスが作成され、必要なすべての構成が不足しています。
スターリングディアス

10

ここで述べたすべてを行った後:
http //blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a- connection-to-sql-server-microsoft-sql-server-error / それでもうまくいきませんでした。

手順は私のために働きました:

Start > Run > cmd > sqlcmd -L

サーバー名の入力を求められます。このサーバー名が、SQL Management Studioの[サーバーへの接続]ボックスで接続しようとしているサーバー名と同じであることを確認してください。

私は私が使い続けるこの愚かな間違いをしました MSSQLSERVERサーバー名ではなく、。

これが私のような愚かな間違いをする人たちのために役立つことを願っています。

ありがとう。


7

SQL Server 2016とWindow 10を使用しています。

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

最初に、SQL Serverへのリモート接続を許可します。私がやったことはsqlservermanager13.mscと入力することですSQL Server構成マネージャーを開くために、スタートメニューで。TCP / IPステータスが有効になっていることを確認します。 ここに画像の説明を入力してください

TCP / IPプロトコル名をダブルクリックして、TCPポート番号を確認します。通常、デフォルトでは1433です。

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

次の手順では、セキュリティが強化されたWindowsファイアウォールMicrosoft管理コンソール(MMC)スナップインを使用して、Windowsファイアウォールを構成します。セキュリティが強化されたWindowsファイアウォールは、現在のプロファイルのみを構成します。

TCPアクセス用にWindowsファイアウォールでポートを開くには

  1. [スタート]メニューの[ファイル名を指定して実行]をクリックし、「WF.msc」と入力して、[OK]をクリックします。
  2. セキュリティが強化されたWindowsファイアウォールの左側のウィンドウで、[受信の規則]を右クリックし、操作ウィンドウで[新しい規則]をクリックします。
  3. [ルールの種類]ダイアログボックスで、[ポート]を選択し、[次へ]をクリックします。
  4. [プロトコルとポート]ダイアログボックスで、[TCP]を選択します。[特定のローカルポート]を選択し、データベースエンジンのインスタンスのポート番号(既定のインスタンスの場合は1433など)を入力します。次へをクリックします。
  5. [アクション]ダイアログボックスで、[接続を許可する]を選択し、[次へ]をクリックします。
  6. [プロファイル]ダイアログボックスで、データベースエンジンに接続するときのコンピューター接続環境を説明するプロファイルを選択し、[次へ]をクリックします。
  7. [名前]ダイアログボックスで、このルールの名前と説明を入力し、[完了]をクリックします。

設定する別のこと。

動的ポートを使用しているときにSQL Serverへのアクセスを開くには

  1. [スタート]メニューの[ファイル名を指定して実行]をクリックし、「WF.msc」と入力して、[OK]をクリックします。
  2. セキュリティが強化されたWindowsファイアウォールの左側のウィンドウで、[受信の規則]を右クリックし、操作ウィンドウで[新しい規則]をクリックします。
  3. [ルールの種類]ダイアログボックスで、[プログラム]を選択し、[次へ]をクリックします。
  4. [プログラム]ダイアログボックスで、[このプログラムパス]を選択します。[参照]をクリックし、ファイアウォール経由でアクセスするSQL Serverのインスタンスに移動して、[開く]をクリックします。既定では、SQL ServerはC:\ Program Files \ Microsoft SQL Server \ MSSQL13.MSSQLSERVER \ MSSQL \ Binn \ Sqlservr.exeにあります。次へをクリックします。
  5. [アクション]ダイアログボックスで、[接続を許可する]を選択し、[次へ]をクリックします。
  6. [プロファイル]ダイアログボックスで、データベースエンジンに接続するときのコンピューター接続環境を説明するプロファイルを選択し、[次へ]をクリックします。
  7. [名前]ダイアログボックスで、このルールの名前と説明を入力し、[完了]をクリックします。

Microsoft doucmentationを見て 、データベースエンジンアクセス用のWindowsファイアウォールを構成する


私のPC Windows 10では、SQLサーバーインスタンスはC:\ Program Files \ Microsoft SQL Server \ MSSQL13.SQLEXPRESS \ MSSQL \ Binn \ Sqlservr.exe
Mayer Spitzerにあります。

7

次のメソッドをテストできます。

  • a

    1. プロジェクトの接続文字列を確認してください。
  • b

    1. サービスに移動し、SQLServerインスタンスを再起動します。
  • c

    1. 「SQLServer構成マネージャー」を開く
    2. 左側のパネルで「SQLServer Network Configuration」を選択して展開します
    3. 「MSSQLServerのプロトコル」を選択します
    4. 右側のパネルで、「TCP / IP」をクリックします。
    5. 「プロトコル」タブで「有効」を「はい」に設定します
    6. [IPアドレス]タブを下にスクロールします
    7. 「IPAll」で「TCPポート」を1433に設定します
  • d
    1. 「高度なセキュリティを備えたファイアウォール」を開く
    2. 右側のタブで「インバウンドルール」を選択します

中央のタブで、「ローカルポート」が1433であるレコードを見つけます。見つからない場合は、次のレベルで作成してみてください。

  • [スタート]メニューで[ファイル名を指定して実行]をクリックし、「WF.msc」と入力して、[OK]をクリックします。
  • 左側のパネルで、[セキュリティが強化されたWindowsファイアウォール]をクリックします。
  • 右側のパネルで[受信の規則]を右クリックし、[新しい規則]をクリックします
  • [ルールの種類]ダイアログボックスで、[ポート]を選択し、[次へ]をクリックします
  • [プロトコルとポート]ダイアログボックスで、[TCP]を選択し、[特定のローカルポート]を選択して、ポート番号1433を入力し、[次へ]をクリックします。
  • [アクション]ダイアログボックスで、[接続を許可する]を選択し、[次へ]をクリックします。
  • [プロファイル]ダイアログボックスで、[ドメイン]、[プライベート]、[パブリック]をチェックして、[次へ]をクリックします
  • [名前]ダイアログボックスに「SQL 1433ポート」と入力し、説明には独自の説明を入力します。次に[完了]をクリックします
  1. 次に、中央のタブで、見つかったアイテム(インスタンス)または「SQL 1433ポート」の名前で作成したアイテムをダブルクリックします。
  2. 開いたダイアログボックスで[スコープ]タブを選択します(SQL Serverのプロパティ)
  3. ローカルPCでブラウザでgoogle.comにアクセスし、「My IP」を検索します。
  4. 次に、「IP」のコピー
  5. リモートサーバーに移動し、[スコープ]タブの[SQLサーバーのプロパティ]ダイアログボックスの[リモートIPアドレス]で[これらのIPアドレス]オプションを選択して[追加]ボタンをクリックします。
  6. 開いたダイアログボックス(IPアドレス)で、[このIPアドレスまたはサブネット]オプションを選択し、[IP]を貼り付けて、[OK]ボタンをクリックします。

7

このソリューションは、問題 network errorservice背後のSQLサーバーの両方を解決します

私はここで同様の質問に答えました、あなたは他のopen Run type-> services.msc-サービスの下で- sort by stoppedを停止する必要があります- あなたは停止したSQLサービスの束を見るでしょうRight click and start

開始するには、v11またはv12の名前を(localdb)\ mssqllocaldbに変更する必要がある前に、LocalDb SqlExpress Sql Serverの一般的な接続エラー を引き起こす可能性のある4つの問題SQL Network Interfaces, error: 50 - Local Database Runtime error occurredあります。


Troubleshooting Steps
  1. 実行中サービス がこのcmd 実行していない、net start MSSQLSERVERまたはnet start MSSQL$ instancename
  2. ここにファイアウォールポート 設定され ていませんここに画像の説明を入力してください
  3. あなたのインストールには問題/破損があります(以下の手順はあなたに素晴らしいクリーンスタートを与えるのに役立ちます)
  4. V11または12の名前をmssqllocaldb / SqlServerに変更しなかった

最も簡単なのは以下を実行することです。写真と手順を添付してあります。


Resolution Steps:

最初に、インストールしたインスタンスを確認します。これを行うには、レジストリ 確認し、cmdを実行します。

  1. cmd> Sqllocaldb.exe i
  2. cmd> Sqllocaldb.exe s "whicheverVersionYouWantFromListBefore" この手順が失敗した場合は、オプションdcmd> Sqllocaldb.exe d "someDb"で削除できます
  3. cmd> Sqllocaldb.exe c "createSomeNewDbIfyouWantDb"
  4. cmd> Sqllocaldb.exe start "createSomeNewDbIfyouWantDb"

SqlLOCALDb_edited.png


5

私は同じ問題を経験しており、問題はソリューション(WebおよびDroid)にいくつかのプロジェクトがあり、プロジェクトでDefault project選択されてPackage Manager Consoleいるにもかかわらず、Droidプロジェクトからの接続文字列を使用していたことです。

PM> update-database -Verbose
Using StartUp project 'Droid'. <-- DROID
Using NuGet project 'Web'. <-- WEB
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
<!-- BAD TARGET DATABASE -->
Target database is: 'DefaultConnection' (DataSource: .\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Convention).
System.Data.SqlClient.SqlException (0x80131904): 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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   [REMOVED TEXT]
ClientConnectionId:00000000-0000-0000-0000-000000000000
Error Number:-1,State:0,Class:20
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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Startup Projectto WebDefault Projectin Package Manger Consoleを設定した後、私はそれを動作させました。


5

SQL Server BrowserサービスをSQL Server構成マネージャーで実行する必要があります。これがないと、インストールは新しく作成されたサービスを検出できません。


1
私はまだそこにいませんが、近づいています。Visual Studioでこれを行った後も切断して再接続すると、同じエラーが発生しますが、少なくともVS2015の背後からはテーブルを作成できず、データベースでシームを作成して実行することができます。(それらの上にダーククロスアイコンがない)
user3800527

1
コマンドの後に注意してください。これにより、ローカルマシンにサーバー名が表示されます。スタート>実行> cmd> sqlcmd -L
user3800527

4

上記の解決策はケースの90%で機能するはずですが、この回答をまだ読んでいる場合は!!! 意図したものとは異なるサーバーに接続しようとしている可能性があります。接続しようとしていると思われる実際のサーバーとは異なるSQLサーバーを指す構成ファイルが原因である可能性があります。

少なくとも私に起こった。


1
私にも起こりました。ファイアウォールを診断しようとする前にチェックする必要がありました。正しい接続文字列はありましたが、ソリューションで間違ったプロジェクトを実行していました...
VSO

4

Windows 7の仕事用ラップトップからWindows 10の仕事用ラップトップに移動しました。Windows7でSSMS2016を正常に使用していました。

同じ問題がSSMS2012またはSSMS2016を使用して適用されました。Windows認証を使用した10個のSQLサーバーへのアクセスは、今でも同じです。別のサーバーからこれをテストできます。ただし、10台のサーバーのうち2台は私のラップトップから接続できません。どちらもms sql server 9でしたが、他のsql server 9データベースに接続できました。

解決策はファイアウォールルール追加することでした(セキュリティが強化されたWindowsファイアウォールを使用)。

各SSMSの受信ルールを作成します。例:C:\ Program Files(x86)\ Microsoft SQL Server \ 130 \ Tools \ Binn \ ManagementStudio \ Ssms.exe

私はネットワークの専門家ではないので、詳細は記載していませんが、うまくいけば、正しい方向に進むことができます。


エラーメッセージ(ファイアウォール前のルール) "SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverが構成されていることを確認してくださいリモート接続を許可します(プロバイダー:SQLネットワークインターフェイス、エラー:26-指定されたサーバー/インスタンスの検索エラー)(.Net SqlClientデータプロバイダー) "


4

さまざまな状況で発生する可能性があるからといって、なぜこのエラーがとても退屈でうるさいのですか。

私はここですべてのアプローチをしました、そしてまだ吸い込まれています。だから下にブラウジングする前に、あなたが私と同じことをしたことを確認してください。

多分私はあなたの状況をすぐに直すことができないかもしれませんが、私は方向性を指摘したり、u(最後にここに滑り込んだ人)に考えたりすることができます。インスタンス名が明確であることを確認し、データベースを設定して上記の方法でリモートコントロールできるようにした後、実行中のプログラムのエラーを考え始めました。その後、SQL接続のコードスニペットで問題が発生しているのではないかと疑いました。

私の問題の解決策:

  • sqlconnection関数を確認する

  • クリックして構成を表示

  • 新しい接続

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

  • サーバー名を選択

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

それは私が接続のプロセスで正確に何が起こるかについて熟考することで私のために機能します。


これは、Entity Frameworkを使用するときに、LocalDB接続文字列のポート番号を削除する必要があることを見つけるのに役立ちました。
ryanwebjackson

4

私はこの質問に対して他のすべての回答を試しましたが、おそらくこれが私のために機能するのに役割を果たすとは限りませんが、それでもリモートでDBに接続できませんでした。Azure VMでSQL Serverを使用していました。

VMにはAzureアカウントプロキシによって制御されるエンドポイントがあることを覚えていたので、Azureポータルに進み、使用可能なエンドポイントとして1433を追加し、SQLインスタンスに接続できました。

これが他のすべての答えを試してもまだ運がない人を助けることを願っています!


4

概要

ローカルアプリとリモートデータベースの実行中に発生するこの問題を修正するには、SQL Server構成マネージャーを使用して、リモートデータベースのエイリアスを追加します。

細部

最近、Windows 7からWindows 10ラップトップに移行するときにこの問題に遭遇しました。リモートサーバー上のDevデータベースにアクセスするローカルの開発およびランタイム環境を実行していました。SQL Serverクライアントネットワークユーティリティ(cliconfg.exe)を介したサーバーエイリアスセットアップを通じてDevデータベースにアクセスします。ユーティリティの64ビットバージョンと32ビットバージョンの両方でエイリアスが正しく設定され、SSMSを介して新しいラップトップからデータベースサーバーにアクセスできることを確認した後も、OPでエラーが発生しました(OPのIPアドレスではなく、コース)。

リモートのDevデータベースサーバーのエイリアスを追加するには、SQL Server構成マネージャーを使用する必要がありました。修正済み。

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


4

MS SQL Server 2014のサービスステータスを確認できます。Windows7では、次の方法で確認できます。

  1. 検索に移動し、「SQL Server 2014構成マネージャー
  2. 次に、左側のメニューで[SQL Serverサービス]をクリックします
  3. SQL Serverサービスのインスタンスが停止または実行されているかどうかを確認します
  4. 停止している場合は、ステータスを実行中に変更し、SQL Server Management Studio 2014にログインしてください。

3

サーバーをIIS ExpressからローカルIISに変更しようとしたときに(LocalDBの使用中に)問題が発生しました。

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

(開発目的で)LocalDBを使用していて、ローカルIISからIIS Expressに戻すと、Visual StudioはデータソースをData Source =(LocalDb)\ MSSQLLocalDBからData Source =。\ SQLEXPRESSに切り替えました

不正な接続文字列

<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />

正しい接続文字列

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SurveyTestsDB.mdf;Initial Catalog=SurveyTestsDB;Integrated Security=True" providerName="System.Data.SqlClient" />

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


また、接続文字列で\の代わりに/を使用するという愚かな間違いをしないでください。
アンドリューパテ2017年

3

Teo Chuen Wei Bryanの提案に従ってすべてを試すことに加えて、接続文字列で正しいサーバー/インスタンス名も参照していることを確認してください。

データベースサーバーまたはweb.configファイルで短い形式のホスト名/インスタンスを使用している場合は、 完全修飾ドメイン名(FQDN)/インスタンス

また、SQLサーバークライアントが存在しないサーバーからの接続をテストするには、

->テキストファイルを作成し、ファイル拡張子を.udlに変更します。

->ファイルを右クリックすると、接続タブが表示されます。

->サーバー名を入力してログオン情報を入力し、データベースサーバーへの接続をテストします。

お役に立てれば。


3

本番環境で突然このエラーが発生し、何も変更されていない場合は、以下の4つの項目を以下の順序で試して、問題が解決するかどうかを確認してください。

  1. SQLサーバーサービスを再起動します。
  2. SQLサーバーを呼び出しているサービス(IISなど)を再起動します。(SQLサーバーへのサービス呼び出しの開始から応答エラーが発生するまでの時間が非常に短い(約1〜2秒)場合、問題はおそらくここにあります。
  3. SQLサーバーがオンになっているサーバーを再起動します。
  4. 呼び出しサービスがオンになっているサーバーを再起動します。

3

Visual Studioでこのエラーが発生したとき、

「SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認してください。(プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした)」

...次のC#コードの実行中に、SQL Serverデータを取得してグリッドに表示しようとしました。ブレークは、connect.Open()を示す行で正確に発生しました。

        using (var connect = Connections.mySqlConnection)
        {
            const string query = "SELECT Name, Birthdate, Narrative FROM Friends";
            using (var command = new SqlCommand(query, connect))
            {
                connect.Open();
                using (var dr = command.ExecuteReader())
                {
                    while (dr.Read())
                    {
                        // blah
                    }
                }
            }
        }

SQLクエリが非常に単純で、適切な接続文字列があり、データベースサーバーが利用可能だったので、それは不可解でした。実際のSQLクエリをSQL Management Studioで自分で手動で実行することにしましたが、正常に実行され、いくつかのレコードが生成されました。しかし、クエリの結果で目立ったことが1つあります。Friendsテーブル内のvarchar(max)タイプのフィールド内に、不適切にエンコードされたHTMLテキストがいくつかありました(具体的に<!--は、「Narrative」列のデータ内にある種類のエンコードされたコメントシンボル)。疑わしいデータ行は次のようになります。

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    &lt;!--HTML Comment -->Once upon a time...

エンコードされたHTML記号「&lt;」に注意してください。これは「<」文字を表しています。どういうわけかそれはデータベースに入り、私のC#コードはそれを拾うことができませんでした!connect.Open()行で毎回失敗しました!データベーステーブルFriendsのその1行のデータを手動で編集し、代わりにデコードされた「<」文字を入力した後、すべてが機能しました!その行は次のようになるはずです。

Name    Birthdate    Narrative
====    =========    ============== 
Fred    21-Oct-79    <!--HTML Comment -->Once upon a time...

以下の簡単なUPDATEステートメントを使用して、1つの不良行を編集しました。ただし、エンコードされたHTMLの問題のある行が複数ある場合は、REPLACE関数を使用するより複雑なUPDATEステートメントが必要になる場合があります。

UPDATE Friends SET Narrative = '<!--HTML Comment -->Once upon a time...' WHERE Narrative LIKE '&lt%'

したがって、ストーリーの教訓は(少なくとも私の場合は)HTMLコンテンツをデータベースに保存する前にサニタイズすることです。そもそもこの不可解なSQL Serverエラーは発生しません。(ええと、HTMLコンテンツを適切にサニタイズ/デコードすることは、さらに情報が必要な場合、別のStackOverflow検索に値する別の議論の主題です!)



3

Web.configでのXMLタグの配置は重要です

最初

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>

<connectionStrings>
  <add name="SqlConnectionString" connectionString="Data Source=.; Initial Catalog=TestDB; Trusted_Connection=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

3

私の状況では、MSSQLSERVERサービスに問題があったため、サービスを再起動して問題を解決しました。

だから私はサービスアプリに移動することをお勧めします:Windowsキー、「サービス」を検索し、次にSQLインスタンスのSQLインスタンス(通常はSQLサーバー(MSSQLSERVER))を見つけます。サービスを右クリックし、[開始]をクリックします。無効になっている場合は、[再起動]をクリックします。


2

このエラーは、SQLサーバーインスタンスがの場合に発生しますstopped

[すべてのプログラム]> [SQL Server]> [構成ツール]> [SQL SERVER CONFIGURATION MANAGER]に移動します

次に、SQLサーバーサービスをクリックします。インスタンスのリストが表示されます。問題のインスタンスを選択し、上部のツールバーにある再生アイコンをクリックします。これが役立つことを願っています。

この答えは非常に遅いです(しかし、遅くなることはありません;)


2

Entity Frameworkを利用するプロジェクトをスタートアッププロジェクトとして設定し、「update-database」コマンドを実行することでこの問題を解決しました。

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