在Excel-VBA / SQL上:用户" testuser"

时间:2016-03-25 15:51:12

标签: sql-server excel vba excel-vba amazon-web-services

在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进行连接..

2 个答案:

答案 0 :(得分:0)

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

  1. 在vba代码中指定您在yur DATABASE / Security / Users / your_user_name
  2. 中创建的用户名
  3. 在vba代码中指定您在INSTANCE / Security / Logins / your_login_name中指定的密码
  4. 登录应具有以下设置:

    1. 登录状态:连接数据库引擎的权限:授予
    2. 登录状态:登录:已启用。
    3. 实例属性:

      1. “连接”选项卡:启用“允许与此服务器的远程连接”复选框。
      2. 防火墙设置:

        1. 为sqlbrowser.exe和sqlservr.exe添加两个入站规则
        2. SERVICES.MSC:

          1. 确保已启动SQL Server Browser。

答案 1 :(得分:0)

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

1)删除用户和登录..

2)仅将我的SQL Server的安全性设置为Windows身份验证..

3)重启SQL Server ..

4)将我的SQL Server的安全性设置回混合模式身份验证..

5)重新开始..

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

现在没关系..