web-dev-qa-db-ja.com

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

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

108.163.224.173に接続できません。

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

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

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

このエラーは、Visual Studio 2010でデータベースをgridviewに設定しようとしたときにスローされます。このエラーをデバッグする方法がわからなくなります。

このエラーをどのようにデバッグしますか?エラーメッセージに記載されているものに加えて、ここで実際に何が起こっているのかを判断するためにどのような手順を踏むべきですか

313
Sasa Shree

私は以下のテクニックが役に立ちました:

  1. データベースエンジンが リモート接続を受け付けるように設定されていることを確認してください

    • スタート>すべてのプログラム> SQL Server 2005>設定ツール> SQL Server Surface Area Configuration
    • サービスと接続用のSurface Area Configurationをクリックします。
    • 問題があるインスタンスを選択します> Database Engine> Remote Connections
    • ローカル接続とリモート接続を有効にする
    • インスタンスを再起動
  2. ファイアウォールで例外を作成する必要があるかもしれません あなたが使用しているSQL Serverインスタンスとポートの場合:

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

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

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

  4. TCP/IPを有効にする SQL Server設定で

    複数の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のデフォルトポートを変更できる場所を選択します。

270

私には解決策があります。

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

今「SQL Serverネットワーク構成」をクリックし、「 Name 」のプロトコルをクリックしてください。

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

今すぐ「IPアドレス」タブを選択します。 - および - 最後のエントリ「IPすべて」に移動します。

「TCPポート」1433を入力してください。

再起動 "SQL Server .Name" "services.msc"を使用する(winKey + r)

それが動作します...

104
Irshad Khan

スクリーンショットの回答として、私の大いに支持された comment を追加します。

私はこれに多くの時間を費やしました、最後に私のために働いたのは以下のとおりです。

1)開くSQL Server構成マネージャ - >SQL Serverネットワーク構成 - ><(INSTANCE)> - >TCP/IPのプロトコル(ダブルクリックします)。

enter image description here

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

3)最後のエントリIP Allに移動し、TCP Port 1433と記述します。

enter image description here

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

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

enter image description here

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

80
user1336087

Services を開いて、 Sql Server(Sqlexpress) serviceを実行して、この問題を解決しています。

service Image

77
Anik Saha

このエラーは主にSQLサービスが停止したときに発生しました。サービスを再起動する必要があります。このウィンドウに移動するには、このようなサービスを検索する必要があります - enter image description here

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

enter image description here

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

16
Debendra Dash

window + R (Run window Open)を押して、実行ウィンドウで"services.msc"と入力し、新しいサービスが開きます。私の場合はSQL SERVER(SQLEXPRESS)のインスタンス名でSQL SERVERを見つけてから、このサービスを開始してもう一度試してください。あなたも。 - enter image description here

13
Hafiz Asad

Express Editionを使用していると思います

サーバー名に"\SQLEXPRESS"を追加してみてください

例えば"MY-SERVER\SQLEXPRESS"

enter image description here

12

上記の解決策がどれもうまくいかない場合(私には何もうまくいきませんでした)、コンピュータを再起動するだけでSQLサーバ(localhost)に接続できます。

10
eugen sunic

私は私の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を許可します

10
NutCracker

ここで述べたすべてのことをした後:
http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-open-a - SQL Serverへの接続 - Microsoft SQL Serverのエラー /それでも私のためには動作しませんでした。

手順は私のために働いた:

Start > Run > cmd > sqlcmd -L

それはあなたにサーバー名を促します。このサーバー名が、SQL Management Studioの[サーバーに接続]ボックスで接続しようとしているものと同じであることを確認してください。

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

これが私のようにばかげた間違いをする人々の助けになることを願っています。

ありがとう。

7
Denn

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

enter image description here

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

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

enter image description here

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

TCP access用にWindowsファイアウォールのポートを開く

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

設定するもう一つのこと。

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

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

Microsoftのドキュメントを見てください データベースエンジンにアクセスするためのWindowsファイアウォールの設定

5
Fred

以下の方法でテストすることができます。

  • ある

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

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

    1. 「SQLServer構成マネージャ」を開きます。
    2. 左側のパネルで[SQLServer Network Configuration]を選択して展開します。
    3. [MSSQLServerのプロトコル]を選択します。
    4. 右側のパネルでdblをクリックして 'TCP/IP'を
    5. [プロトコル]タブで、[有効]を[はい]に設定します。
    6. [IPアドレス]タブで、下にスクロールします。
    7. 'IPAll'で 'TCP Port'を1433に設定します。
  • d
    1. セキュリティが強化されたファイアウォールを開く
    2. 右側のタブで[受信の規則]を選択します

真ん中のタブで 'local Port'が1433のレコードを見つける。それが見つからない場合は、以下のレベルで作成してみてください

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

私は同じ問題を経験していましたが、問題はソリューションにいくつかのプロジェクト(WebDroid)があり、Default projectPackage 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 ProjectWebに設定し、Default ProjectPackage Manger Consoleに設定した後、動作するようになりました。

4
Jefecito

私はこの質問に対して他のすべての答えを試しました、そして、全部ではないにしてもいくつかは私のためにこれを働かせることに役立ったでしょう、しかし私はまだリモートでDBに接続できませんでした。 Azure VM上でSQL Serverを使用していました。

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

これが他のすべての答えを試してみて、まだ運がない人に役立つことを願っています!

3
John

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

  1. SQL Server 2014 Configuration Managerを検索して入力します。
  2. それから左のメニューの「SQL Server Service」をクリックしてください。
  3. SQL Serverサービスのインスタンスが停止または実行されているかどうかを確認します。
  4. 停止した場合は、ステータスを実行中に変更してSQL Server Management Studio 2014にログインしてください。
3
Chamara

SQL Server Browser serviceを SQL Server Configuration Manager に実行する必要があります。これがなければ、インストールは新しく作成されたサービスを発見できません。

3
MarkosyanArtur

まとめ

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

詳細

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

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

enter image description here

3
Bill Needels

このソリューションは、ネットワークエラーとSQLサーバーの背後にあるサービスの両方も解決します。

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

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

最も簡単なのは以下を行うことであることがわかりました-写真と手順を添付しました。

まず、インストールしたインスタンスを確認します。これを行うには、レジストリをチェックしますandcmdを実行して

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

SqlLOCALDb_edited.png

3
transformer

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

少なくとも私には見えた。

3
Arjmand

それはさまざまな状況で発生する可能性があるという理由だけで、なぜこのエラーはとても面倒で騒々しいです。

私はここで上のすべてのアプローチをしました、そして、まだ吸われています。それで、あなたが下に拾い読みする前に、私と同じことをしたことを確かめてください。

たぶん私は即座にウル状況を直すことができない、しかし私は方向を指摘することができるか、またはuに思考することができる(最後にここに滑り落ちる人)インスタンス名が明確に正しいことを確認し、上記の方法に従ってリモートコントロールを許可するようにデータベースを設定した後、実行中のプログラムが発生するエラーについて熟考し始めました。その後、 SQL接続のコードスニペットで何か問題が発生したと思われます。

私の問題の解決策:

  • Sqlconnection機能を確認してください

  • クリックしてその設定を見る

  • 新しい接続

enter image description here

  • サーバー名を選択してください

enter image description here

それは接続の過程で正確に起こることを熟考することで私のために働きます。私の考えがuエラーを殺すためにあなたを導くことを願っています。

3
Chase07

私はWindows 7の仕事用ノートパソコンからWindows 10の仕事用ノートパソコンに移動しました。私はWindows 7で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 Network Interfaces、エラー:26 - 指定されたサーバー/インスタンスの検索エラー)(.Net SqlClientデータプロバイダ) "

2
johnc

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

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

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

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

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

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

お役に立てれば。

2
SanthoshM

接続文字列の最後に、,とポート番号(,1433のように)を追加してみてください。

2
Kalyan Hurkat

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

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

...それは、グリッドに表示するためにSQL Serverデータを取得しようとしていた、次のC#コードの実行中でした。 breakは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 Management Studioで実際にSQLクエリを自分で手動で実行することにしましたが、これで問題なく実行され、複数のレコードが生成されました。しかし、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検索の価値がある別の議論の主題です!)

2

私の問題は、サーバをIIS ExpressからLocal IISに変更しようとしたとき(LocalDBの使用中)に発生しました。

enter image description here

LocalDBを(開発目的で)使用していて、Local IISからIIS Expressに戻ると、Visual StudioによってデータソースがData Source)に変更されました。 =(LocalDb)\ MSSQLLocalDBからデータソース=。\ 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" />

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

2
megamaiku

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

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

私の問題は、あなたのリポジトリ層とWeb層の both に接続文字列のエントリが必要だということでした。私のweb.configapp.configに追加すると、Entity Frameworkは移行を作成できました。

私の質問は、なぜデータベースアクセスがまったくないときに、web.configがそれを必要とするのかということです。

1
Thing

Localdbのインスタンスが実行されていないようです。コンピュータの起動時に起動するには、スタートメニュー\ StartupフォルダにBATファイルを次の行で追加します。

sqllocaldb start name_of_instance

name_of_instanceは、起動したいlocaldbインスタンスの名前です。 sqllocaldb iを使用してコマンドラインで利用可能なインスタンスを一覧表示できます。

例えばSQL Server Management Studioを使用しており、サーバー名(localdb)\v11.0に接続している場合、BATファイルは次のようになります。

sqllocaldb start v11.0
1
Ondrej

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

だから私はサービスアプリに行くことをお勧めします:Windowsキー、検索"Services"、そしてあなたのSQLインスタンスを通常見つけてください"SQL Server(MSSQLSERVER)" at for Microsoft SQL server 。サービスを右クリックして[開始]をクリックし、無効な場合は[再起動]をクリックします。

1

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>
1
user7339584

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

すべてのプログラム> SQL Server>設定ツール> SQL SERVER CONFIGURATION MANAGERに移動します。

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

この答えは非常に遅れています(しかし決して遅れることはありません;)

1
Alex

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

1
user1796440

Visual Studioでデバッグ中にこの問題が発生した場合は、プロジェクトのビルドパスがローカルドライブを指していることを確認するか、 これらの手順 に従ってネットワークフォルダへのアクセス許可を付与してください。

1
Kevin D.

私もこの問題を抱えていました。この投稿で提案されたすべてを試しましたが、何も機能しませんでした。最後に、SQL Serverでこのクエリを実行して問題を解決しました

EXEC sp_configure 'remote access', 0 ;  
GO  
RECONFIGURE ;  
GO  
0

データベースが実際にはMS SQL Serverではないという事実と同じくらい単純なこともあります。たとえば、データベースが実際にMySqlであり、System.Data.SqlClientを使用してそれに接続しようとすると、このエラーが発生します。

ほとんどの場合、ADO.Netの例はMSSQL用であり、経験の浅いユーザーでも、MySqlでSqlConnectionSqlCommandなどを使用できないことを知らない場合があります。

すべてのADO.Netデータプロバイダは同じインターフェイスに準拠していますが、データベース用に作成されたプロバイダを使用する必要があります。

0
Crowcoder