我如何获得ms-access连接(通过ODBC)作为与其Active Directory ID不同的用户连接到ms-sql数据库?
我不想在ODBC连接中指定一个帐户,我想在ms-access端进行该操作以将其隐藏在我的用户之外.在ODBC连接中执行此操作会让我重新回到我想要避免的原始状态.
是的,这与先前的问题有关:http://www.stackoverflow.com/questions/50164/
如果你使用"ODBC DSN-LESS连接",我想你可以按照你想要的方式工作
如果需要,请使用Windows身份验证将ODBC DSN保留在用户的计算机上.为您的用户提供对数据库的只读访问权限.(如果他们创建一个新的mdb文件并链接表,他们将只能读取数据.)
创建一个对数据库具有读/写权限的SQL登录.
编写一个VBA例程,它循环遍历链接表并重置连接以使用SQL登录,但一定要使用"DSN-Less"语法.
"ODBC;Driver={SQL Native Client};" & "Server=MyServerName;" & _ "Database=myDatabaseName;" & _ "Uid=myUsername;" & _ "Pwd=myPassword"
将此例程称为启动代码的一部分.
关于这种方法的几点注意事项:
一旦从"读/写"更改为"只读"并尝试返回"读/写"而不关闭并重新打开数据库(mde/mdb)文件,Access似乎就会出现连接信息问题.如果您可以在启动时将其更改为读/写,并且在会话期间不更改此解决方案应该可以正常工作.
通过使用DSN - Less连接,您可以在代码中隐藏用户的凭据(假设您给他们一个mde文件,您应该没问题).通常硬编码连接字符串不是一个好主意,但由于你正在处理一个内部应用程序,你应该可以使用这种方法.