我在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。
答案 0 :(得分:1)
我认为你在这里解决了错误的问题。
SQL Azure是云服务,您将在此处遇到几种不同类型的连接问题,例如:
30分钟后连接关闭是最明显的一个,但你肯定会面对其他人。
在处理云服务时,您应该考虑“重试”思维模式,并尝试了解如何在出现错误时“重试”。也许最明显的解决方案是在循环中重启你的第三方应用程序,或编写脚本来杀死&每10分钟重启一次等。