我正在使用Access数据库,该数据库已通过DSN ODBC连接将表链接到DB2数据库。
所有表都使用相同的System DSN,因为它们都在同一个DB2数据库中。要获得一组表,我将系统DSN“ A”与一个用户名和密码一起使用,对于另一组表,我将使用与第一组表相同的系统DSN“ A”,但使用另一个用户ID和密码。
这在Access中造成了严重破坏,因为如果我从第一组中打开一个表,它将缓存凭据,然后,如果我尝试从第二组中打开一个表而不重新启动Access,它将抛出一个Package Name Version
Django 2.2
Python 3.7.2
Crispy_Forms 1.7.2
Debug Toolbar 1.11
Django_Tables2 2.0.6
Django_Tables2_Column_Shifter 0.5.2
错误。
使用此answer,我可以解决该问题:我创建了两个不同的System DSN ODBC连接,每个表组一个。这样一来,我就可以在同一会话中从任何一组中打开表而没有授权错误(例如,必须重新启动Access)。
我想知道Windows 10和Office 365中是否有办法(通过vba,AutoExec宏,更改注册表,策略等)将Invalid credentials/username
的默认行为从CurrentProject.AccessConnection.Properties("Cache Authentication")
更改为到True
打开数据库后,此属性为readonly。
所以我的另一个想法是:如果打开一个缓存身份验证设置为False的远程数据库,然后将其添加到另一个数据库的工作区中,可以通过VBA在该“远程”数据库中运行DAO查询吗?
例如:数据库“ A”具有到DB2的所有链接表。从另一个数据库“ B”中打开数据库“ A”,并将其添加到数据库“ B”的工作空间中,并将“缓存身份验证”设置为false(可能是<-吗?)v False
?或OpenConnection
。从数据库“ B”中打开数据库“ A”后,是否可以使用VBA引用数据库“ A”中的链接表来在数据库“ B”中运行即时查询(即没有存储的proc)?>
更新
根据{{3}}第556页,无法使用OpenDatabase
指定高级选项
Access 2003 VBA Programmer's Reference
这个问题已经问过几次了:
答案 0 :(得分:0)
不幸的是,我不知道这是可能的。
但是,您可以(应该)采用较少DSN的连接。因此,这将消除使用DSN的需要。 (这几天很痛苦-尤其是在锁定机器的情况下)。这样一来,您无需重新链接即可更改登录名/ uid。
但是,如果您需要同时访问两个数据库,您仍然非常需要两组表。您也可以重新运行链接代码,但是毫无疑问,您一直在避免重新链接,而您只想交换DSN。
因此,您可以在不重新链接的情况下切换用户/密码。但是,如果您需要切换指向的数据库?没办法解决-您必须重新链接表。
因此,仅用一组链接表,您就可以再次登录(使用不同的用户/ ID),但是要切换指向的数据库,您必须重新链接。
不,除非退出并重新加载访问权限,否则您无法清除密码缓存。