无法摆脱“物理连接不可用”的例外

问题描述 投票:24回答:7

我即将开枪自杀。花了几周时间试图解决这个问题。我们有一个ASP.NET MVC 4 Web应用程序,它使用SQL Server 2012和Entity Framework作为ORM和Unity for IoC。 Web应用程序托管在Amazon EC2上。我开始得到“物理连接不可用”的例外。它每天发生几次。我搜索了很多文章和论坛,并尝试了所有可能的建议:

  • 尝试从连接字符串“Polling = False”中删除池
  • 尝试限制池大小和连接生命周期
  • 尝试将Unity的LifetimeManager更改为HierarchicalLifetimeManager,PerRequestLifetimeManager。还确保在请求结束后处理实体上下文
  • 删除了所有TransactionScope引用

当异常发生时,恢复应用程序的唯一方法是重启服务器,这是非常糟糕的!

这是完全例外:

将请求发送到服务器时发生传输级错误。 (提供者:会话提供者,错误:19 - 物理连接不可用)

sql-server asp.net-mvc entity-framework unity-container ioc-container
7个回答
7
投票

我现在确认,通过更改服务器上的连接字符串来使用“。”对于数据源而不是域名,异常似乎已经消失。以前用于工作的域名非常奇怪。必须是SQL Server上的某种更新


6
投票

我知道这是一个老帖子,但我最近遇到了这个错误的可怕时间,并且在任何博客上都没有解决方案。

关于我的问题的具体细节:具有目标.NET framework 4.5的ASP.NET Web应用程序,MVC版本。 5.2.3,实体版6.0.0.0,MS SQL Server Express 2014.我的开发系统运行的是Windows 7 Pro SP1。

症状:突然出现错误(我已经在这个项目上工作了将近三个星期,当时它运行良好)。当我启动应用程序时,在记录用户之后,实体框架ALLWAYS发送到数据库的第二个查询生成错误“从服务器接收结果时发生了传输级错误。(提供者:会话提供者,错误: 19 - 物理连接不可用)“。查询哪个表并不重要。错误不是间歇性的,重启服务器没有帮助。使用IIS和IIS express发生错误。

SqlConnection.ClearAllPools()仅阻止了一个查询的错误,我不想在程序中的每个Entity调用之前添加它。我尝试了所有博客上的每一个解决方案都没有用,甚至是其他传输级错误的解决方案。我为我的引用回滚了包更新,试图恢复到工作状态。没有!

解决方案:罪魁祸首是Microsoft SQL Server 2014 SP1安全更新(KB3070446)!!我回滚了这个更新,一切都像魅力!

我失去了两天的开发工作处理这个问题,希望这篇文章可以帮助别人避免这种痛苦!


1
投票

我也遇到了这个错误。在我的情况下,问题是数据库服务器关闭了连接,但连接在我的应用程序的连接池中仍然有效。

重置应用程序池使我的应用程序重新启动并运行。


1
投票

删除MaxDegreeOfParallelism后出现此错误,默认设置为-1或设置db.Database.CommandTimeout = 0时没有限制。

建议将MaxDegreeOfParallelism明确设置为安全值。

另一种情况:当应用程序与服务器数据库通信时,网络连接甚至停机几秒钟。


0
投票

数据库连接由数据库服务器关闭。该连接在您的应用的连接池中仍然有效;因此,当您拾取共享连接字符串并尝试执行它时,无法访问数据库。如果您正在开发Visual Studio,只需关闭任务栏上的临时Web服务器即可。

如果它在生产中发生,重置您的网站的应用程序池应该回收连接池。

可能是由于入侵防御系统的更新。

请尝试参考以下主题:http://forums.asp.net/t/1908976.aspx

希望它可以提供帮助。


0
投票

这对我来说是一个DNS错误,诊断因为在连接字符串中使用服务器名称产生了错误,但使用IP工作正常。打开cmd提示符,运行快速ipconfig /flushdns以查看它是否有帮助。


0
投票

我有两天相同的错误!甚至不知道为什么突然发生了?!!

  • 结果是:我有一个网络身份验证访问问题(由于我的WiFi连接)..一旦我断开连接/禁用我的WiFi并仅通过电缆(安全和稳定)连接连接..错误消失了。 。
  • 我也做了以下,例如:

重新启动所有SQL Server服务。重新启动我的SQLServer实例。将这些道具添加到我的DEF连接字符串中..

Connection Lifetime=30; Max Pool Size=350;Connection Timeout=30;Connection Lifetime=0;ConnectRetryCount=3;ConnectRetryInterval=10; 
© www.soinside.com 2019 - 2024. All rights reserved.