首页 > 解决方案 > MS Access DNSless 连接到 MS SQL Server 用户 ID/通过失败

问题描述

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

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

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

SQL Server 登录对话框。

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

我尝试了许多连接字符串;到目前为止,这是唯一能让我如此接近的人。我需要运行它而无需手动输入用户 ID/密码。此外,在我的情况下,链接表也不起作用。

感谢您的关注。

标签: sql-serverms-access-2016

解决方案


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

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

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

如果做不到这一点,您的 SQL 用户是否对表具有 INSERT 权限?


推荐阅读