【发布时间】:2019-05-08 13:52:57
【问题描述】:
我正在开发一个 Access 数据库,该数据库通过 DSN ODBC 连接将表链接到 DB2 数据库。
所有表都使用相同的系统 DSN,因为它们都在同一个 DB2 数据库中。为了获得一组表,我使用带有一个用户 ID 和密码的系统 DSN “A”,而对于另一组表,我使用与第一组表相同的系统 DSN “A”,但使用另一个用户 ID和密码。
这对 Access 造成了严重破坏,因为如果我从第一个组打开一个表,它会缓存凭据,然后如果我尝试从第二个组打开一个表而不重新启动 Access,它会引发 Invalid credentials/username 错误。
使用这个answer 我能够解决它:我创建了两个不同的 System DSN ODBC 连接,一个用于每组表。这允许我在同一会话中打开任一组中的表而不会出现授权错误(例如,无需重新启动 Access)。
我想知道,Windows 10 和 Office 365 中是否有办法(通过 vba、AutoExec 宏、更改注册表、策略等)将 CurrentProject.AccessConnection.Properties("Cache Authentication") 的默认行为从 True 更改为 False
一旦打开数据库,这个属性就是readonly。
所以我的另一个想法是:如果您打开一个缓存身份验证设置为 False 的远程数据库并将其添加到另一个数据库中的工作区,您可以通过 VBA 中的 DAO 在该“远程”数据库中运行查询吗?
例如:数据库“A”有所有链接到 DB2 的表。从另一个数据库“B”我打开数据库“A”并将其添加到数据库“B”的工作区,缓存身份验证设置为 false(OpenConnection?或OpenDatabase。一旦从数据库“B”打开数据库“A”,我是否能够使用引用数据库“A”中链接表的 VBA 在数据库“B”中运行动态查询(意味着没有存储过程)?
更新
根据Access 2003 VBA Programmer's Reference p.556,无法使用OpenConnection 指定高级选项
这个问题已经被问过好几次了:
【问题讨论】:
-
所以你有一个工作流程。似乎已经回答了您自己的问题。
-
@June7 之类的。我可以完全在 Access DB 上工作,但想知道是否有办法禁用 Access 中的凭据缓存,遗憾的是,工作中,你知道,你有最小的工作解决方案,并像我的情况一样继续,希望有人会有如果可以禁用缓存,请给出答案。
标签: vba database ms-access authentication db2