与MS SQL Server用户ID的MS Access无DNS连接/通过失败

时间:2018-11-21 16:55:47

标签: sql-server ms-access-2016

我正在使用MS Access 2016从便携式计算机连接到MS SQL服务器。我的目的是在SQL服务器中插入一些本地数据。我在SQL Server上有一个用户帐户,其用户类型设置为“带有登录名的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 Login dialogue box.

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

我尝试了许多连接字符串;到目前为止,这是唯一可以使我如此接近的人。我需要运行它而不必手动输入userID / Pass。 另外,在我的情况下,链接表不起作用。

感谢您的光临。

1 个答案:

答案 0 :(得分:0)

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

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

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

如果失败,您的SQL用户是否对该表具有INSERT权限?