在Excel-VBA上,我尝试在Amazon AWS / RDS(免费套餐)上连接到我的SQL Server。我得到的只是:
运行时错误' -2147217843(80040e4d)':用户登录失败 ' TESTUSER'
我的代码:
Dim conn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
ConnectionString = "Provider=SQLOLEDB;Data Source=***sqlserver_instance***.amazonaws.com,1433;Initial Catalog=TESTDB;User ID=testuser;Password=testpassword;"
conn.Open ConnectionString
StrQuery = "SELECT * FROM TestTable WHERE ThisField = '" & Sheets("ThisSheet").Range("ThisValue").Value & "'"
rst.Open StrQuery, conn
Sheets("AnotherSheet").Range("A1").CopyFromRecordset rst
我可以使用与上面相同的用户名连接,管理数据库并使用SQL Server Management Studio执行查询。
注意:在Amazon AWS / RDS上的SQL实例上启用了混合模式身份验证。我也为我的连接字符串使用不同的组合/参数但仍然相同...另外,我在我的本地机器上运行SQLExpress的数据库副本,代码使用Integrated Authentication=SSPI;
工作尝试创建一个' TESTUSER'在Amazon AWS / RDS中具有类似权限的本地计算机上,我收到类似错误(登录失败..)。
这可能是SQL用户/登录的SQL服务器中的权限问题吗?什么权限' testuser'需求?
SQL日志报告:
错误:18456,严重性:14,状态:5
但是我使用的用户名就在那里,可以用来通过SQL Server Management Studio进行连接..
答案 0 :(得分:0)
当您尝试使用VBA连接到SQL Server时,您应该
登录应具有以下设置:
实例属性:
防火墙设置:
SERVICES.MSC:
答案 1 :(得分:0)
仍然无法弄清楚这里发生了什么,但我结束了......
1)删除用户和登录..
2)仅将我的SQL Server的安全性设置为Windows身份验证..
3)重启SQL Server ..
4)将我的SQL Server的安全性设置回混合模式身份验证..
5)重新开始..
6)重新创建登录和用户..恢复数据库的权限..
现在没关系..