gpt4 book ai didi

sql-server - Excel 使用 VBA 使用 Windows 身份验证连接到 SQL

转载 作者:行者123 更新时间:2023-12-04 22:02:33 24 4
gpt4 key购买 nike

我在一个用户拥有两个单独帐户的环境中工作。将它们登录到主机上,然后使用单独的主机通过特殊软件访问虚拟机。

其中一台虚拟机有一个 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

我知道原因是用于登录主机的用户名没有(也不应该)具有访问 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

这确实让我输入唯一的用户名/密码,但是当我给它正确的域帐户时,我收到一条错误消息

"Login Failed for user.... Reason:Attempting to use an NT account name with SQL Server Authentication

。有没有办法提示运行我的宏的用户使用 Windows 身份验证提供用户名/密码,与他们登录的身份分开?

如果没有,我的选择似乎是

1)设置为让他们从虚拟机内运行它(可能,但不方便)

2) 硬编码一个具有数据库只读访问权限的 SQL 用户名/密码(完全不喜欢这个想法)

3)单独添加主机的用户名以访问SQL数据库(不太可行)

4) 添加主机用户名的整个用户组,以便对 SQL 数据库具有只读访问权限(可以忍受,但开放的访问权限比我希望的要广泛得多)

最佳答案

Windows 身份验证不会让您输入用户名+密码 - 这就是重点:Windows 进行身份验证。如果您想要用户+密码,则需要设置一个SQL用户。

确保登录到主机虚拟机的任何用户都可以访问 SQL 实例,并且它应该正常工作


不相关的旁注,这个:

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

违背了这样做的目的:

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

如果您想要后期绑定(bind),您应该将 cnrs 声明为 Object 变量。否则,使用 CreateObject 是没有意义的 - 只需 New 即可,如果这些声明可以编译,则项目必然具有对 ADODB 的引用!

关于sql-server - Excel 使用 VBA 使用 Windows 身份验证连接到 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208758/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com