如何通过 ADODB.Connection 对象使用一组指定的 Windows 凭据连接到 MS SQL Server?
例子:
Dim oConn
Set oConn = CreateObject("ADODB.Connection")
Dim oRs
Set oRs = CreateObject("ADODB.Recordset")
Dim strConnection
Dim strSQL
strSQL = "SELECT * from Computer WHERE DeviceName = N'myDevice'"
oConn.Provider = "SQLOLEDB.1"
oConn.Properties("User ID") = "myDomain\myUser"
oConn.Properties("Password") = "myPassword"
oConn.Properties("Initial Catalog") = "myDB"
oConn.Properties("Data Source") = "mySQLServer"
oConn.Open
如果我这样做,那么它会失败并出现以下错误:
Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user 'myDomain\myUser'.
检查 SQL Server 日志显示此错误:
Login failed for user 'myDomain\myUser'. Reason: Could not find a login matching the name provided. [CLIENT: <IP>]
帐户“myDomain\myUser”可以访问 SQL Server,因为它是在服务器上具有“sysadmin”权限的组的成员。我可以使用相同的用户名 RDP 到 SQL Server 并成功打开 Management Studio 并管理 SQL Server。
我基本上想要实现的是使用集成安全性,因为我通过 IIS 上的网页运行它,您必须使用 Active Directory 进行身份验证才能访问。身份验证部分正在工作,Request.ServerVariables("AUTH_USER")
并将显示正确的用户名。
如果我将“用户 ID”和“密码”部分替换为,oConn.Properties("Integrated Security") = "SSPI"
则会出现以下错误:
Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'.
哪个不是我提供的凭据?
我怎样才能使这项工作?
提前致谢。