Sql server 如何让ms access以不同的用户身份连接到ms sql?
如何让ms access以不同于其Active Directory ID的用户身份(通过ODBC)连接到ms sql数据库 我不想在ODBC连接中指定帐户,我想在ms access端这样做,以对我的用户隐藏它。在ODBC连接中这样做会让我回到我试图避免的原始状态Sql server 如何让ms access以不同的用户身份连接到ms sql?,sql-server,ms-access,odbc,Sql Server,Ms Access,Odbc,如何让ms access以不同于其Active Directory ID的用户身份(通过ODBC)连接到ms sql数据库 我不想在ODBC连接中指定帐户,我想在ms access端这样做,以对我的用户隐藏它。在ODBC连接中这样做会让我回到我试图避免的原始状态 是的,这与前面的一个问题有关:我认为您必须在要用于连接的帐户下启动MS Access进程。有各种工具可以让您实现这一点,例如。此工具还可以让您加密密码。我们承认您正在使用ODBC连接到数据库,并启用了集成安全性,因此您没有/不想在连接字
是的,这与前面的一个问题有关:我认为您必须在要用于连接的帐户下启动MS Access进程。有各种工具可以让您实现这一点,例如。此工具还可以让您加密密码。我们承认您正在使用ODBC连接到数据库,并启用了集成安全性,因此您没有/不想在连接字符串中写入用户名/密码值(我认为这是正确的选择) 在这种情况下,幸运的是,在连接到数据时无法“模拟”另一个用户。和我一起承认,能够做出这样的事情将是集成安全的巨大突破 我从您之前的帖子中了解到,您希望用户能够更新数据,而不是依赖于他们使用的客户端界面。根据我的想法,这个想法是为每个表创建一个链接的“不可更新”视图。假设为每个名为
table_Blablabla
的表创建一个名为view_table_Blablabla
的视图(=Access中的查询)
使用Access时,您可以在运行时决定是打开可更新表还是只读视图。例如,可以在运行时,在form_Open
事件中,通过将form recordsource设置为表或视图来完成此操作。@Philippe我假设您使用的单词“承认”大致等同于“理解”或“同意”;与否定相反 我理解让所有用户使用一个ID和密码登录数据库(并将其存储在应用程序中)的含义。对我来说,这比我现在面临的问题风险要小。
@关 有关该问题的更多背景信息: 我使用Windwos NT身份验证在每个用户工作站上设置了ODBC连接。大多数情况下,用户使用MDE设置连接以使用该ODBC连接—在这种情况下,他们始终能够添加/更新/删除数据 问题在于,一些用户接受了足够多的MS Access教育,可以创建新的mdb并将其链接到MS-SQL server。然后,他们可以直接在表中编辑数据,而不是通过应用程序进行一定量的验证和手工操作。他们喜欢这样做,但有时会把事情搞得一团糟,给我带来麻烦。我希望做的是(我刚刚尝试过)刷新每个表的数据库链接,就像这样(注意:在本次实验中,我已将ODCB连接切换到SQL Server身份验证,并将帐户也添加到SQL Server:readonly-无法更新,以及readwrite-在表上具有完全权限) 这会阻止他们编辑,但我无法让以后的读写正常工作
myTable.Connect = _
"ODBC;" & _
"DATABASE=" & "MyTestDB" & ";" & _
"UID=readwrite;" & _
"PWD=readwrite_password;" & _
"DSN=" & "MyTestDB" & ";"
myTable.RefreshLink
似乎无论我首先连接哪个权限,它都会一直保持不变。如果我开始读写,然后转到只读,则表仍保留读写权限如果使用 如果需要,请使用windows身份验证将ODBC DSN保留在用户的计算机上。为用户提供对数据库的只读访问权限。(如果用户创建新mdb文件并链接表,则只能读取数据。) 创建对数据库具有读/写权限的SQL登录 编写一个VBA例程,在链接表上循环并重置连接以使用SQL登录,但一定要使用“无DSN”语法 调用此例程作为启动代码的一部分 关于这种方法的几点注意事项:
- 当您从读/写更改为只读并尝试返回读/写而不关闭和重新打开数据库(mde/mdb)文件时,Access似乎对连接信息有问题。如果您可以在启动时将其更改为读/写,并且在会话期间不更改,则此解决方案应该可以工作
- 通过使用无DSN连接,您可以在代码中对用户隐藏凭据(假设您给他们一个mde文件,您应该可以)。通常硬编码连接字符串不是一个好主意,但由于您处理的是内部应用程序,您应该可以使用这种方法
myTable.Connect = _
"ODBC;" & _
"DATABASE=" & "MyTestDB" & ";" & _
"UID=readwrite;" & _
"PWD=readwrite_password;" & _
"DSN=" & "MyTestDB" & ";"
myTable.RefreshLink
"ODBC;Driver={SQL Native Client};" &
"Server=MyServerName;" & _
"Database=myDatabaseName;" & _
"Uid=myUsername;" & _
"Pwd=myPassword"