我正在使用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
该行运行以执行查询时,我会看到一个对话框:
如果我将“登录ID”字段的内容更改为连接字符串中使用的登录名,并将密码添加到“密码”字段中,然后单击“确定”,则建立连接并正确执行SQL插入查询。
我尝试了许多连接字符串;到目前为止,这是唯一可以使我如此接近的人。我需要运行它而不必手动输入userID / Pass。 另外,在我的情况下,链接表不起作用。
感谢您的光临。
答案 0 :(得分:0)
根据我的评论,我想我应该提交一个实际的答案。
该对话框似乎已从连接字符串中提取了数据,但密码除外。这使我相信连接字符串中的Password参数不正确。我相当确定,对于ODBC连接字符串,password参数应为PWD = {password}。 (作为一个补充说明,我相当确定User也应该也是UID = {username},但是对话框似乎已经选择了您的用户名,因此大概User = {username}是一个合适的选择。
这是Microsoft Docs Link-向下滚动到连接字符串格式...它在连接字符串中显示UID = {username}; PWD = {password}。
如果失败,您的SQL用户是否对该表具有INSERT权限?