Azure SQL-连接在空闲30分钟后自动关闭



有一个旧的.NET桌面应用程序,每天都在使用。由于我们已将数据库从旧的内部部署服务器移动到Azure SQL,因此SQL连接出现问题。Azure SQL数据库正在使用层S2。

闲置15-30分钟后,应用程序无法再查询SQL,因为连接已关闭。该应用程序的开发人员告诉我,由于一些性能问题,他必须始终打开SQL连接,并且他不能将其更改为打开-关闭原则。不幸的是,我不得不处理这个问题,我不知道为什么它必须保持开放。

在空闲的15-30分钟后,应用程序会出现以下错误:

从服务器接收结果时发生传输级别错误。(提供程序:TCP提供程序,错误:0-远程主机强制关闭了现有连接。(

他试图将ConnectionLifetime=0添加到他的连接字符串中,但无济于事。他也有这个错误:

通过TCP操作的SQL Server客户端每隔30秒发送一次保活消息。(Keepalives本质上是0 len TCP数据包(通常被认为是可忽略的流量。

我们有没有办法在空闲后保持连接有效或增加超时?任何想法或经验都将不胜感激!

该应用程序的开发人员告诉我,由于一些性能问题,他必须始终保持SQL连接打开

我很想知道;性能问题";需要长期持久连接。这不是一个对云友好的模式,但有一种解决方案不需要更改代码。

假设Azure SQL网关正在断开连接(有30分钟的空闲超时(,建议使用重定向连接策略。以下是文档中的实现摘录。

重定向(推荐(:客户端直接建立到托管数据库的节点,从而减少延迟并改进吞吐量对于使用此模式的连接,客户端需要:

  • 允许从客户端到所有Azure SQL IP地址的出站通信该地区的港口数量在11000至11999之间。使用服务SQL的标记,使其更易于管理。

  • 允许从客户端到Azure SQL数据库网关IP的出站通信端口1433上的地址。

  • 当使用重定向连接策略时,有关您所在地区允许的IP地址列表。

最新更新