MS Access 与 MS SQL 服务器 userid/pass 的无 DNS 连接失败

MS Access DNSless connection to MS SQL Server userid/pass fail

我正在从装有 MS Access 2016 的笔记本电脑连接到 MS SQL 服务器。我的目的是将一些本地数据插入 SQL 服务器。我在 SQL 服务器上有一个用户帐户,用户类型设置为 'SQL user with login'。我使用下面的连接字符串:

connStr = "ODBC;Driver={ODBC Driver 13 for SQL Server};" & _
        "Server=" & dbServer & ";" & _
        "Database=" & dbName & ";" & _
        "User=" & UID & ";" & _
        "Password=" & PWD & ";"
Dim cdb As DAO.Database, qdf As DAO.QueryDef
Set cdb = CurrentDb
Set qdf = cdb.CreateQueryDef("")
qdf.Connect = connStr
qdf.SQL = "INSERT INTO theTble (field1, field2) VALUES ('data1', 'data2');"
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError  <--- this line opens the dilogue box

当第 运行s 行执行查询时,我得到一个对话框:

如果我将登录 ID 字段内容更改为连接字符串中使用的登录名并将密码添加到密码字段并单击“确定”,则会建立连接并正确执行 SQL 插入查询。

我尝试了很多连接字符串;到目前为止,这是唯一能让我如此接近的一个。我需要这个 运行 而无需手动输入 userID/Pass。 此外,链接 table 在我的情况下不起作用。

感谢观看。

根据我的评论,我想我会提交一个实际的答案。

对话框似乎从连接字符串中提取了除密码之外的数据。这使我相信连接字符串中的密码参数不正确。我相当确定对于 ODBC 连接字符串,密码参数应该是 PWD={password}。 (作为旁注,我相当确定 User 也应该是 UID={username} ,但是对话框似乎已经选择了您的用户名,所以大概 User={username} 是一个 suitable 替代。

这是一个 Microsoft Docs Link - 向下滚动到连接字符串格式...它在连接字符串中显示 UID={username};PWD={password}。

否则,您的 SQL 用户是否具有对 table 的 INSERT 权限?