当数据库放在本地网络中的远程计算机上时,是否有人遇到Delphi 7应用程序和Firebird 1.5.6的问题?
客户端和服务器计算机正在运行Windows 7操作系统。它定期发生。客户端应用程序失去与服务器的连接。
我在应用程序启动时打开了与服务器的连接。我不知道这里发生了什么。我的客户端使用该应用程序,打开Delphi表单填充一些数据并走开20分钟。当他返回时决定填写表格,之后想要保存内容。在保存按钮上,应用程序冻结。
我认为连接丢失了。为什么,以及如何?
连接丢失时是否可能出现异常或事件? 是否可以在保存程序之前确定连接是否处于活动状态?
我是不是一直保持连接打开,或者最好在每次请求之前打开连接并在此之后关闭? 如果是,连接阶段需要花费一些时间,但不足以感知它。
可能解决方案是设置操作系统网络超时。 但是在哪里以及如何?
编辑:另一个案例 除了描述的情况之外,它还会在应用程序启动时不时发生,有时需要1或2分钟才能打开与远程Firebird数据库的连接。我设计它在应用程序启动时打开连接。在那段时间之后,evreything工作得很好。我的意思是应用程序不会崩溃,但再次发生冻结问题。 为什么有时需要这么长时间才能连接,我不知道?
答案 0 :(得分:0)
您可以根据需要保持连接TIbDatabase
,如果它失去连接,它将自动重新连接。如果您处于联网状态,将在空闲时失去连接。
由于Firebird的多代架构,您不应该长时间保持TIbTransaction
活动:当您在Firebird表中更改某些内容时,会创建该“某事”的新记录,使所有旧记录保持活动状态只要至少有一个活跃的交易挥之不去。
我对正在发生的事情的猜测:TIbTransaction空闲了20分钟,TIbDatabase连接被丢弃,导致您的事务处于未知状态。
答案 1 :(得分:0)
尝试编辑firebird.conf文件
1)查找参数DummyPacketInterval,删除"#"并更改为DummyPacketInterval = 60
2)重启Firebird
答案 2 :(得分:0)
检查客户端网络适配器驱动程序上的电源管理选项。 在设备管理器下,默认值是关闭设备以节省电量