SQL Azure KeepAlive问题

时间:2016-02-23 09:52:27

标签: sql-server azure azure-sql-database

我在Azure上托管了一个连接到SQL Azure DB的VM。我运行的第三方应用程序在空闲30分钟后关闭Azure连接时崩溃,因为它尝试更新数据库并且连接已关闭。

我知道正确的做法是使用try / catch例程重新连接,但它是第三方应用程序,我很难尝试。因此,我试图增加保持活动时间,但没有成功。我遵循了here提到的建议,但没有运气。我检查了VM上的注册表,并且密钥已更改,但连接在30分钟后仍然关闭。我想这可能是因为这篇文章是针对云项目的,需要更改服务定义文件,因为我只有一个VM而不是云项目,所以我无法执行。另外,我对Azure很新,所以我可能会说/做一些非常愚蠢的事情!

提前致谢。

我用于.cmd文件的代码如下:

if exist keepalive.txt goto done
time /t > keepalive.txt
REM Workaround for JDBC keep alive on SQL Azure
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveTime /t REG_DWORD /d 300000000 >> keepalive.txt
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveInterval /t REG_DWORD /d 100000 >> keepalive.txt
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpMaxDataRetransmission /t REG_DWORD /d 10 >> keepalive.txt
shutdown /r /t 1
:done

----------------------------------------------- ---------

编辑: 第三方应用程序安装在VM上,它通过JDBC驱动程序连接到SQL Azure。

1 个答案:

答案 0 :(得分:1)

我认为你在这里解决了错误的问题。

SQL Azure是云服务,您将在此处遇到几种不同类型的连接问题,例如:

  • 连接已关闭,您遇到过
  • 暂时失败 - 服务可能暂时无法正常工作(但稍后会工作),因为它是云端
  • 限制 - 您的服务层可能无法获得足够的资源,或者您只是消耗了此时段中的所有资源

30分钟后连接关闭是最明显的一个,但你肯定会面对其他人。

在处理云服务时,您应该考虑“重试”思维模式,并尝试了解如何在出现错误时“重试”。也许最明显的解决方案是在循环中重启你的第三方应用程序,或编写脚本来杀死&每10分钟重启一次等。