Sql server SSMS SQL以不同于Excel VBA的用户身份运行

Sql server SSMS SQL以不同于Excel VBA的用户身份运行,sql-server,excel,vba,authentication,runas,Sql Server,Excel,Vba,Authentication,Runas,我可以手动右键单击SSMS并选择“作为其他用户运行”,然后输入我的windows身份验证用户和密码,这将成功打开与所需服务器和DBs的连接 是否有方法从Excel VBA调用“以其他用户身份运行”选项并传递用户和密码详细信息 我目前拥有的VBA代码如下: Public Sub SQL_Data() Dim Conn As New ADODB.Connection Dim SystemSever, Systemdb As String Dim RS As ADODB.Recordset Dim

我可以手动右键单击SSMS并选择“作为其他用户运行”,然后输入我的windows身份验证用户和密码,这将成功打开与所需服务器和DBs的连接

是否有方法从Excel VBA调用“以其他用户身份运行”选项并传递用户和密码详细信息

我目前拥有的VBA代码如下:

Public Sub SQL_Data()

Dim Conn As New ADODB.Connection
Dim SystemSever, Systemdb As String
Dim RS As ADODB.Recordset
Dim CMD As ADODB.Command
Dim SQL_1 As String

SystemServer = "ServerName"
Systemdb = "DBName"

Set Conn = New ADODB.Connection
Conn.CommandTimeout = 60000
Conn.ConnectionTimeout = 60000
Conn.Open "DRIVER={SQL Server};SERVER=" & SystemServer & ";DATABASE=" & Systemdb & ";Trusted_Connection=Yes;OPTION=16427"

Set RS = New ADODB.Recordset
Set CMD = New ADODB.Command

With CMD
    .ActiveConnection = Conn
End With

With RS
    .CursorLocation = adUseClient
End With

SQL_1 = "SELECT ....... " & _
        "FROM .......... "
RS.Open SQL_1, Conn, adOpenStatic

If WorksheetFunction.CountA(Range("Table_Data")) > 1 Then Range("Table_Data").Delete
Range("Table_Data").CopyFromRecordset RS

RS.Close
Set CMD = Nothing

End Sub

一个可能更好的选择是使用凭据管理器存储
服务器:1433
的凭据。这样,应用程序就不必以任何形式处理
运行方式了。@Jeroenmoster请您再详细介绍一下好吗?如何将其写入VBA代码中?您不知道--凭据管理器是一个内置的Windows组件(从一开始就可以访问),它可以为每台服务器存储用于域身份验证的备用凭据。如果您在其中存储了服务器的凭据(端口1433),则在连接到SQL server时,Windows中的身份验证位将自动使用该凭据。这对应用程序是透明的。唯一不起作用/不充分的情况是,您需要根据场景使用不同的凭据连接到同一服务器,或者管理员已锁定凭据管理器的使用。@Jeroemoster请参阅下面的“答案”。@Jeroemoster我无法使凭据管理器工作。它似乎不接受包含\的服务器名称。我怎样才能避开这件事?例如,我的服务器名是:AB-CDEF-1\GHIJ