在VBA中从Excel连接到SQL Server的问题

时间:2012-09-11 10:41:59

标签: sql-server sql-server-2008

我需要能够使用用户名/密码从Excel连接到SQL Server。我已经指定:

'Declare variables'
    Set objMyConn = New ADODB.Connection
    Set objMyRecordset = New ADODB.Recordset
    Dim strSQL As String

'Open Connection'
    objMyConn.ConnectionString = "Driver=SQL Server;Server=SERVER\SERVER;Database=we_ci_db; Uid = genericReadWrite; Pwd=XYZ;"
    objMyConn.Open

'Set and Excecute SQL Command'
    strSQL = "select TOP 1 * from tblUsers WHERE alias='" & "username" & "'"

    'Debug.Print strSQL
'Open Recordset'
    Set objMyRecordset.ActiveConnection = objMyConn
    objMyRecordset.Open strSQL

'Copy Data to Excel'
    Sheets("Sheet1").Range("A4").CopyFromRecordset (objMyRecordset)

代码将一些基本详细信息复制到“系统”选项卡,更新一些标记“UserID,SystemAccess”等,然后删除密码哈希以确保安全。

现在我认为它一直运行良好,但它显然已经回归到Windows身份验证(我的团队和我在SQL Server上被明确列为用户。

但是当我找到一个没有明确添加为NT登录到服务器的人时,它将无法正常工作。请注意,服务器IS设置为混合身份验证。

在Excel中,我们得到-2147467259 - [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database "we_ci_db" requested by the login. The login failed.

服务器日志说: Login failed for user 'DOMAIN\user'. Reason: Failed to open the explicitly specified database. [CLIENT: xx.xx.xx.xx]

我很感激任何帮助让它开始工作,因为它开始让我烦恼。我不知道它是SQL Server问题还是连接字符串问题,尽管连接字符串至少部分有效,即使服务器忽略了用户名。

0 个答案:

没有答案