1

我需要能够使用用户名/密码从 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 登录的人时,它就不起作用了。请注意,服务器是为混合身份验证设置的。

在 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 问题还是连接字符串问题,尽管连接字符串至少部分有效,即使服务器忽略了用户名。

4

0 回答 0