我需要能够使用用户名/密码从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问题还是连接字符串问题,尽管连接字符串至少部分有效,即使服务器忽略了用户名。