我正在研究使用DAO访问SQL Server的应用程序的更新。我知道,但现在让我们考虑DAO。
应用程序一直在系统托盘中运行,并定期执行SQL Server操作。由于它一直在运行,并且应用程序的用户将在笔记本电脑上并在建筑物之间转换,因此我将其设计为在活动和非活动状态之间安静地转换。当数据库连接成功时,操作恢复。
在我发布此更新之前,我有最后一个问题:当连接被删除,然后重新建立时,SQL操作失败。仅当我在连接字符串中指定了主机名时才会发生这种情况。如果我使用IP,一切都很好(但我需要能够使用主机名)。
以下是行为:
1)一切正常。良好的网络连接,数据库操作都很好。
2)连接丢失。任务栏图标上出现小'x',没有别的。一切都好。
3)重新连接。
在第3步,运行第一个查询时出现'ODBC - call failed'错误。有趣的是,数据库首次打开时没有错误。
如果我跳过步骤1,并在连接断开时启动应用程序,则步骤3中的一切正常,主机名是否正常。
我预计这是第一次连接后DAO引擎缓存DNS条目的问题,尽管目标IP没有改变所以我不确定。我试过刷新Windows DNS缓存(从cmd提示符)无效。即使我将本地主机名与我设置用于开发的本地SQL服务器一起使用,也会出现相同的行为。 127.0.0.1没有问题。
我还尝试在活动时间之间使用CoUninitialize()DAO接口,但是我无法使其工作。如果有人认为这会有所帮助,我会更加努力。
此行为在Windows XP或7中相同。
感谢您的一切!
编辑:我应该提到 - 我正在关闭尝试之间的数据库连接,然后用
重新打开它m_pDb = m_pDaoEngine->OpenDatabase()
答案 0 :(得分:0)
我最终咬了一口子弹并将应用程序转换为ADO。现在一切都运行良好,数据库操作的启动速度要快得多。