【发布时间】:2017-03-10 16:09:03
【问题描述】:
我的 VB6 程序使用 ADODB 执行大量 SQL (2000) CRUD。
有时远程客户端和数据中心之间的网络连接以某种方式“断开”,导致无法建立新连接(因此启动程序的用户无法使用它)。
问题如下: 在“drop”时正在使用该程序的任何人都可以毫无问题地继续使用它,执行每个操作,更新数据,读取数据,一切似乎都在正常工作。
然后用户继续启动“总结”报告,其中列出了所做的所有事情(在“丢弃”之前或之后)。
如果我们随后检查数据库,关于网络中断后所做的任何事情的所有数据都不存在。用户重新进入程序,一切都和断网前一样。
似乎所有查询都以某种方式在内存中执行?我什至不知道如何解决这个问题(我对 VB6 足够熟悉,可以使用源代码,但我对 ADODB 了解不多)。
由于客户的可用性有限(开发环境位于他们的办公室中),我尚未尝试复制该行为,我将尝试从 IDE 启动程序,然后拔掉网线。
如果我可以复制该问题,我该如何解决?有什么我不知道的设置吗?
附带说明:问题是零星的(在去年发生了几次,并且该软件每天都被多个并发用户大量使用)。
【问题讨论】:
-
欢迎询问更多信息,我不确定添加到问题中的内容可能有用。
-
你的连接设置是什么?
-
您使用的是客户端游标还是服务器端游标?这可能会有所帮助:Using Disconnected Recordsets
-
在 WAN 上使用客户端-服务器 DBMS 充其量是一个冒险的提议。忽略这样做带来的令人毛骨悚然的安全风险,您可能会消耗大量带宽并遭受延迟问题的困扰。如果您没有进行足够的错误处理,数据丢失是一个真正的威胁。将尽可能多的靠近数据库的工作转移到存储过程或更好的中间层逻辑中,并精简客户端。使用无状态 Web 服务连接您的客户端和中间层逻辑。
-
@Bob77 一切都好,不过,该软件现在正在生产中,而且很大,目前无法重新制作。
标签: vb6 sql-server-2000 adodb