web-dev-qa-db-ja.com

「物理接続が使用できません」という例外を取り除くことができません

私は自分自身を撃ちます。この問題を解決するために数週間を費やしました。 SQL Server 2012とEntity FrameworkをORMおよびIoC用Unityとして使用するASP.NET MVC 4 Webアプリがあります。 WebアプリはAmazon EC2でホストされます。 「物理接続は使用できません」という例外が表示され始めました。それは一日に数回起こります。多くの記事やフォーラムを検索し、考えられるすべての提案を試しました。

  • 接続文字列「Polling = False」からプーリングを削除しようとしました
  • プールのサイズと接続の有効期間を制限しようとしました
  • UnityのLifetimeManagerをHierarchicalLifetimeManager、PerRequestLifetimeManagerに変更しようとしました。また、エンティティのコンテキストがリクエストの終了後に破棄されるようにしました
  • すべてのTransactionScope参照を削除しました

例外が発生した場合、アプリケーションを復元する唯一の方法はサーバーを再起動することです。これは非常に悪いです!!!

これは完全な例外です。

サーバーに要求を送信するときに、トランスポートレベルのエラーが発生しました。 (プロバイダー:セッションプロバイダー、エラー:19-物理接続は使用できません)

24
fenix2222

「。」を使用するようにサーバー上の接続文字列を変更することにより、今確認します。ドメイン名ではなくデータソースの場合、例外は消えたようです。以前は動作していたドメイン名として非常に奇妙です。 SQL Serverで何らかの更新が必要です

7
fenix2222

私はこれが古い投稿であることを知っていますが、最近このエラーで恐ろしい時間を過ごしており、どのブログにも解決策がありませんでした。

私の問題に関する特定の詳細:ターゲット.NET framework 4.5、MVC ver。 5.2.3、エンティティバージョン6.0.0.0、MS SQLServer Express2014。私の開発システムはWindows 7 Pro SP1を実行しています。

症状:エラーが突然発生しました(ほぼ3週間プロジェクトに取り組んでいませんでしたが、その時点で正常に機能していました)。ユーザーをログインした後、アプリを起動すると、Entity Framework ALLWAYSによってデータベースに送信された2番目のクエリがエラー「」を生成しました(プロバイダー:セッションプロバイダー、エラー:19-物理接続は使用できません)」。どのテーブルが照会されたかは関係ありません。エラーは断続的ではなく、サーバーの再起動は役に立ちませんでした。 IISおよびIIS express。

SqlConnection.ClearAllPools()は、1つのクエリのみのエラーを防止しました。プログラム内のすべてのEntity呼び出しの前にこれを追加したくありませんでした。私はすべてのブログですべての解決策を試みましたが、他のトランスポートレベルのエラーの解決策もありませんでした。作業状態に戻ろうとして、参照のパッケージ更新をロールバックしました。何もない!

解決策:原因はMicrosoft SQL Server 2014 SP1セキュリティ更新プログラム(KB3070446)でした!!私はこの更新をロールバックし、すべてが魅力のように機能しました!

この問題に対処する開発者の仕事を2日間失いました。この投稿が他の誰かがこの苦痛を避けるのに役立つことを願っています。

6
MDGeek

Db.Database.CommandTimeout = 0の設定中にデフォルトで-1または制限なしに設定されているMaxDegreeOfParallelismを削除した後に、このエラーが発生しました。

推奨事項は、MaxDegreeOfParallelismを明示的に安全な値に設定することです。

別のシナリオ:アプリケーションがサーバーデータベースと通信している間、ネットワーク接続は数秒間停止します。

1
usefulBee

このエラーも発生しました。私の場合、問題はデータベースサーバーによって接続が閉じられたが、接続はアプリの接続プールで有効なままだったということでした。

アプリケーションプールをリセットすると、アプリが復旧し実行されました。

1
DDA

これはDNSエラーでした。接続文字列でサーバーnameを使用するとエラーが発生しましたが、[〜#〜] ip [〜#〜]を使用したため、うまくいきました。 cmdプロンプトを開き、クイックipconfig /flushdns役立つかどうかを確認します。

0
codeMonkey

2日間同じエラーが発生しました!そして、それが突然起こった理由さえ知りませんでしたか?!!

  • 判明したこと:ネットワーク認証アクセスの問題が発生しました(WiFi接続のため).. WiFiを切断/無効にし、ケーブル(セキュリティで保護された安定した)接続のみで接続すると、エラーはなくなりました。 。

  • また、私は次のようなことをしました:

すべてのSQL Serverサービスを再起動しました。 My SQLServerインスタンスを再起動しました。これらの小道具をDEF接続文字列に追加しました。

Connection Lifetime=30; Max Pool Size=350;Connection Timeout=30;Connection Lifetime=0;ConnectRetryCount=3;ConnectRetryInterval=10; 
0
Mahmoud Sayed

データベースサーバーによってデータベース接続が閉じられます。接続はアプリの接続プールで有効のままです。その結果、共有接続文字列を取得して実行しようとすると、データベースに到達できません。 Visual Studioを開発している場合は、タスクバーで一時的なWebサーバーを閉じるだけです。

本番環境で発生した場合、Webサイトのアプリケーションプールをリセットすると、接続プールがリサイクルされます。

侵入防止システムの更新が原因である可能性があります。

次のスレッドを参照してください: http://forums.asp.net/t/1908976.aspx

それが役立つことを願っています。

0
Samuel Moshie