我在用户拥有两个单独帐户的环境中工作。用户将它们登录到主机上,然后使用另一台主机来访问带有特殊软件的虚拟机。
其中一台虚拟机有一个 SQL 数据库,用于记录它们希望能够从主机上安装的 Excel 访问的警报。我已经测试了以下代码,它在我的测试虚拟机上运行良好,但在主机虚拟机上失败。
Sub Alarm_Query()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
With cn
.ConnectionString = "PROVIDER=SQLOLEDB;DATA SOURCE=SERVER;INITIAL CATALOG=A2ALMDB;INTEGRATED SECURITY=sspi;"
.Open
End With
Run Code Online (Sandbox Code Playgroud)
我知道原因是用于登录主机的用户名没有(也不应该)具有访问 SQL 数据库所需的凭据。我尝试将其更改为
Sub Alarm_Query()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
With cn
.ConnectionString = "PROVIDER=SQLOLEDB;DATA SOURCE=SERVER;INITIAL CATALOG=A2ALMDB;"
.Properties("Prompt") = 2
.Open
End With
Run Code Online (Sandbox Code Playgroud)
这确实让我输入了唯一的用户名/密码,但是当我给它正确的域帐户时,我收到一条错误消息:
“用户登录失败...原因:尝试使用 NT 帐户名进行 SQL Server 身份验证
。有没有办法提示运行我的宏的用户使用 Windows 身份验证提供用户名/密码,与他们登录的身份分开?
如果不是,我的选择似乎是 …