Abi*_*hur 2 sql-server excel vba
我在用户拥有两个单独帐户的环境中工作。用户将它们登录到主机上,然后使用另一台主机来访问带有特殊软件的虚拟机。
其中一台虚拟机有一个 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 身份验证提供用户名/密码,与他们登录的身份分开?
如果不是,我的选择似乎是
1)设置为让他们从虚拟机内运行它(可能,但不方便)
2) 硬编码一个具有数据库只读访问权限的 SQL 用户名/密码(完全不喜欢这个想法)
3)单独添加主机的用户名以访问SQL数据库(不太可行)
4) 添加主机用户名的整个用户组,以便对 SQL 数据库具有只读访问权限(可以忍受,但开放的访问权限比我希望的更广泛)
Windows 身份验证不会让您输入用户名+密码 - 这就是重点:Windows进行身份验证。如果你想要用户+密码,你需要设置一个SQL用户。
确保登录到主机虚拟机的任何用户都可以访问 SQL 实例,并且它应该可以正常工作。
不相关的旁注,这个:
Run Code Online (Sandbox Code Playgroud)Dim cn As ADODB.Connection Dim rs As ADODB.Recordset
违背了这样做的目的:
Run Code Online (Sandbox Code Playgroud)Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset")
如果您想要后期绑定,您应该将cn和声明rs为Object变量。否则,使用就没有意义CreateObject——只要New这样,如果这些声明编译通过,项目必然有对 ADODB 的引用!