在Excel-VBA / SQL上:用户“testuser”login失败

在Excel-VBA上,我试图连接到Amazon AWS / RDS(免费层)上的SQL Server。 我所得到的是:

运行时错误“-2147217843(80040e4d)”:用户testuserlogin失败。

我的代码:

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 

我可以连接,pipe理数据库并使用SQL Server Management Studio使用与上面相同的用户名执行查询。

注意 :Amazon AWS / RDS上的SQL实例上启用了混合模式身份validation。 我也为我的连接string使用不同的组合/参数,但仍然是相同的…此外,我有我的本地机器上运行SQLExpress数据库的副本,并使用Integrated Authentication=SSPI;的代码工作Integrated Authentication=SSPI; 尝试在我的本地计算机上创build一个“testuser”,在Amazon AWS / RDS中具有类似的权限,并且出现类似的错误(login失败..)。

这可能是在SQL用户/loginSQL服务器的权限问题? 'testuser'需要什么权限?

SQL日志报告:

错误:18456,严重性:14,状态:5

但是,我正在使用的用户名在那里,可以用来连接通过SQL Serverpipe理工作室..

当您尝试使用VBA连接到SQL Server时,您应该

  1. 在vba代码中指定您在yur DATABASE / Security / Users / your_user_name中创build的用户名
  2. 在VBA代码中指定您在INSTANCE / Security / Logins / your_login_name中分配的密码

login应该有这样的设置:

  1. login状态:连接数据库引擎的权限:授予
  2. login状态:login:启用。

实例属性:

  1. 连接选项卡:打开“允许远程连接到此服务器”checkbox。

防火墙设置:

  1. 为sqlbrowser.exe和sqlservr.exe添加两个入站规则

SERVICES.MSC:

  1. 确保SQL Server浏览器已启动。

仍然无法弄清楚这里发生了什么,但我结束了..

1)删除用户和login

2)将我的SQL Server的安全性设置为仅Windows身份validation。

3)重新启动SQL Server ..

4)将我的SQL Server的安全性设置回混合模式身份validation。

5)重新启动..

6)重新创buildlogin和用户..恢复权限的数据库..

现在没关系..