1

我正在运行 Access 2010 FE 和 SQL Server 2005 BE。我可以通过使用 DSNless 连接成功地执行对我的 SQL Server 的查询。

在我的测试阶段,有时我需要恢复我的数据库以恢复我的原始记录,以便我可以重新运行我的查询。我发现当我运行直通查询时,它会在我的 SQL Server 上创建一个活动连接。我通过 MANAGEMENT | 下的 SQL Server 管理控制台看到了连接。SQL Server 日志 | 活动监视器,选择查看进程。在那里,当我运行通过查询时,我可以看到正在使用哪个进程 ID 以及谁在使用它。

现在我恢复数据库的唯一方法是杀死进程,例如活动连接

现在,当我恢复数据库并重新运行直通查询时,我会收到一个 ODBC -- Call Failed 消息框。我试图运行一个程序来刷新我的查询定义,但无济于事,当我单击这些对象时,我仍然会得到 ODBC--调用失败消息框。

现在有两个关于如何解决这个问题的选项,在任何一种情况下,我都觉得这不是用户友好的。

  • 重新启动我的访问应用程序
  • 等待大约 5-10 分钟以重新运行传递查询

我创建了一个函数来捕获我的 ODBC 错误,如下所示:

ODBC 错误号:0
错误描述:[Microsoft][ODBC SQL Server Driver]通讯链路故障

ODBC 错误号:3146
错误描述:ODBC--调用失败。

因此,如果由于某种原因,当 Access 应用程序当前通过 ODBC 连接时,我需要重新启动我的 SQL 服务器或终止我的 SQL 服务器上的进程(活动连接),通过 ODBC 创建的对象将无法正常执行,直到我执行 2 解决方法解决方案如上所述。

任何人都可以就解决方案提出一些建议吗?我很欣赏任何见解。

4

1 回答 1

0

前段时间问了一个类似的问题,一直没有得到满意的答案。我原来的问题在这里:Force SET IDENTITY_INSERT to take effect faster from MS Access

这里记录了一个用于控制超时行为的 ACE注册表设置:

ConnectionTimeout:缓存连接在超时之前可以保持空闲的秒数。默认值为 600(值为 REG_DWORD 类型)。

因此,作为第三种解决方法(除了您已经列出的两个),您可以将该注册表设置更改为更短的超时(如 10 秒)。这是我在回答中采用的方法。一个警告是,缩短超时可能会导致性能或其他问题。你的旅费可能会改变。

有关更多信息,请参阅我对原始问题的完整答案。

于 2011-10-31T20:47:03.413 回答