0

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」は、サーバー上で「sysadmin」権限を持つグループのメンバーであるため、SQLServerにアクセスできます。同じユーザー名を使用してSQLServerにRDPを実行し、ManagementStudioを正常に開いてSQLServerを管理できます。

私が本質的に達成したいのは、アクセスを取得するためにActive Directoryを使用して認証する必要があるIISのWebページを介してこれを実行しているため、統合セキュリティを使用することです。認証部分が機能しており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'.

提供されたクレデンシャルではないものはどれですか?

どうすればこれを機能させることができますか?

前もって感謝します。

4

1 に答える 1

2

注目すべき点がいくつかあります。Windows ドメイン アカウントでログインしようとしている場合は、信頼できる接続を使用しようとしている可能性があります。匿名アクセスを許可しないように IIS を構成し、統合 Windows 認証をオンにする必要があります (これは、インストールされている IIS のバージョンと OS によって異なる場合があります)。

次の接続文字列を見て、それらが役に立たないかどうかを確認してください (これらは、使用しているデータベースによって異なる場合があります。適切なものについては、Google で検索してください)。

ログインしたユーザーの資格情報を使用するには

strConn = "Driver={SQLServer};Server=your_server_name;Database=your_database_name;Trusted_Connection=yes;"
Set cnt = Server.CreateObject("ADODB.Connection")
cnt.ConnectionString= strConn

SQL Server のユーザー名とパスワードを使用するには (ドメイン名とパスワードではありません)

strConn = "Driver={SQL Server};Server=mySQLServer;Database=myDB;uid=someUser;pwd=somePass"
Set cnt = Server.CreateObject("ADODB.Connection")
cnt.ConnectionString= strConn

幸運を。

于 2013-01-29T14:51:32.750 に答える