每次Access连接到SQL Server而不使用Windows身份验证时,如何避免手动输入登录名和密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每次Access连接到SQL Server而不使用Windows身份验证时,如何避免手动输入登录名和密码相关的知识,希望对你有一定的参考价值。

我正在连接到Azure服务器以导入由第三方托管的数据。由于公司与我公司之间的安全协议,我无法使用Windows身份验证进行连接。我必须使用用户名和密码进行服务器端身份验证。我使用OBDC通过DSN连接到Azure。问题是每次我打开Access并连接到Azure表时,我都会通过手动取消选中“使用可信连接”然后输入该服务器的用户名和密码来解决连接错误。有没有办法自动化这个过程?

答案

您可以使用两种方法来解决此问题。

一种方法是删除所有表链接,然后重新链接。执行此操作时,请确保选中此框以保存uid /密码。因此,Access将记住有衬里的表的设置。但是,如果您“经常”或“总是”需要提示用户进行uid / logon,那么每次都必须重新链接表。但是,如果您不需要重新链接或更改uid /密码,那么这是一个简单而精细的解决方案。

请记住,您的uid /密码处于链接表的“简单”视图中 - 因此,只有您可以决定这是否是“非问题”,或者您希望阻止用户查看的内容。

另一种方法是按原样“保留”您的内联表,并在您的启动代码中执行登录。执行登录后,现有的链接表(不保存uid /密码)现在可以正常工作。

您可以使用以下代码“登录”到服务器,一旦完成,则不应出现所有这些提示。

Function TestLogin(strCon As String) As Boolean

  On Error GoTo TestError

  Dim dbs          As DAO.Database
  Dim qdf          As DAO.QueryDef

  Set dbs = CurrentDb()
  Set qdf = dbs.CreateQueryDef("")

   qdf.connect = strCon

   qdf.ReturnsRecords = False

   'Any VALID SQL statement that runs on server will work below.
   ' this does assume user has enough rights to query built in
   ' system tables

   qdf.sql = "SELECT 1 "
   qdf.Execute

   TestLogin = True

   Exit Function

TestError:
   TestLogin = False
   Exit Function

End Function

您必须传递上面正确格式化的连接字符串。

另一答案

我将尝试“登录”技术,让你知道它是怎么回事。为了给出更多背景知识,我将其链接到几个后端数据库中。使用Windows身份验证在公司服务器上自动登录的那些。由于存在安全问题,第三方开发人员服务器上的表无法与Windos身份验证链接。第三方连接必须使用开发人员的登录名和密码。

以上是关于每次Access连接到SQL Server而不使用Windows身份验证时,如何避免手动输入登录名和密码的主要内容,如果未能解决你的问题,请参考以下文章

使用 MS Access 2003 连接到 SQL Server 2005

Access 2000 连接到 SQL Server 2005

使用 OleDb 从 Access Forms 连接到 SQL Server

MS Access 使用 Windows 用户名连接到 SQL Server

通过 ODBC 连接到 SQL Server 的 Access 中的 MS SQL 查询

将 MS Access 连接到网络上的 SQL Server