用户(SQL Server)通过VBA(Excel)宏

时间:2018-01-16 17:04:12

标签: sql-server vba excel-vba adodb excel

我在Excel电子表格中创建一个宏,该宏将使用SQL Server身份验证连接到SQL Server实例。这是我以前写的一个我知道有效的再生功能。我怀疑它是我构建SQL身份验证的连接字符串的方式,还是用户配置的方式(尽管我已经通过SSMS成功登录到服务器,因此我知道帐户工作)。

Public Function GetConnection(ServerLocation As String, db As String) As ADODB.Connection
Dim ServerName As String, cn As ADODB.Connection, un As String, pw As String

un = "MyUser"
pw = "MyPassword"

ServerName = "MyServer"

If cn Is Nothing Then
    Set cn = New ADODB.Connection
    cn.ConnectionString = "Driver={SQL Server};Server=" & ServerName & ";Database=" & db & ";UID='" & un & "';Pwd=" & pw & ";"
    cn.CursorLocation = adUseClient
    cn.Open

当我运行宏时,我得到了

  

登录用户" MyUser"

失败

cn.Open行。

我已检查过允许远程登录,并且启用了SQL Server和Windows身份验证模式。我还重新创建了用户帐户以防万一。

连接字符串是否存在问题,或者我在服务器上遗漏了什么?

非常感谢!

1 个答案:

答案 0 :(得分:1)

我找到了解决方案:UID周围的单引号不是必需的。在查看日志并注意到用户名的格式化后,我发现了这些。没有额外的单引号,连接成功,我的过程成功执行。

我的最终连接字符串如下所示:

cn.ConnectionString = "Driver={SQL Server};Server=" & ServerName & ";Database=" & db & ";UID=" & un & ";Pwd=" & pw & ";"