【问题标题】:SQL-Server Connection Fails after Network Reconnect网络重新连接后 SQL-Server 连接失败
【发布时间】:2012-03-27 01:23:14
【问题描述】:

我正在对使用 DAO 访问 SQL Server 的应用程序进行更新。我知道,但现在让我们将 DAO 视为一项要求。

应用程序一直在系统托盘中运行,并定期执行 SQL 服务器操作。由于它一直在运行,并且应用程序的用户将使用笔记本电脑并在建筑物之间转换,因此我将它设计为在活动和非活动状态之间安静地转换。当数据库连接成功时,操作恢复。

在发布此更新之前,我遇到了最后一个问题:连接断开然后重新建立时,SQL 操作会失败。仅当我在连接字符串中指定了主机名时才会发生这种情况。如果我使用 IP,一切都很好(但我需要能够使用主机名)。

这是行为:

1) 一切正常。网络连接良好,数据库操作正常。

2) 失去连接。小“x”出现在任务栏图标上,没有别的。没事。

3) 重新连接。

在第 3 步,我在运行第一个查询时收到“ODBC--调用失败”错误。有趣的是,数据库第一次打开时没有错误。

如果我跳过第 1 步,并在连接断开时启动应用程序,则在第 3 步中一切正常,主机名与否。

我认为这是 DAO 引擎在第一次连接后缓存 DNS 条目的问题,尽管目标 IP 没有改变,所以我不确定。我尝试刷新 Windows DNS 缓存(从 cmd 提示符)无效。即使我将本地主机名与我为开发设置的本地 SQL 服务器一起使用时,也会发生相同的行为。 127.0.0.1没有问题。

我还尝试在活动时间之间 CoUninitialize() DAO 接口,但我无法让它工作。如果有人认为这会有所帮助,我会更加努力。

此行为在 Windows XP 或 7 中是相同的。

感谢您提供的一切!

编辑:我应该提到 - 我在尝试之间关闭数据库连接,然后用

重新打开它
m_pDb = m_pDaoEngine->OpenDatabase()

【问题讨论】:

    标签: c++ sql-server networking odbc


    【解决方案1】:

    我最终硬着头皮将应用程序转换为 ADO。现在一切正常,并且数据库操作的启动速度要快得多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-24
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多