2

ラップトップに IIS7 をインストールして構成し、python cgi インターフェイスを使用しています。Eclipse 内から Python スクリプトを実行し、探している結果をデータベースから取得できます。しかし、Web ページからスクリプトを実行すると、認証エラーが発生します。接続文字列が資格情報を SQL サーバーに渡していないようです。何かご意見は?

import pyodbc
import cgi
import cgitb; cgitb.enable()

cnxn = pyodbc.connect(driver='{SQL Server}', 
                  server='SERVER\INSTANCE', 
                  Trusted_Connection='yes', 
                  database='Test_Chad', 
                  uid='SERVER\username', 
                  pwd='password')

def getRow():
    cursor = cnxn.cursor()
    cursor.execute("select user_id, user_name from users")
    row = cursor.fetchone()
    print 'name:', row.user_id     
    print 'name:', row.user_name

getRow()

例外:

<class 'pyodbc.Error'>: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'.
(18456) (SQLDriverConnect); [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'. (18456)") 
args = ('28000', r"[28000] [Microsoft][ODBC SQL Server Driver][SQL ... for user 'NT AUTHORITY\ANONYMOUS LOGON'. (18456)") 
message = ''
4

4 に答える 4

1

データベースまたは Windows のどちらの形式の認証を使用するかを決定します。両方を使用することはできません。

Windows 認証を使用する場合は、接続設定を次のように変更します。

cnxn = pyodbc.connect(driver='{SQL Server}', server='SERVER\INSTANCE',  
                      database='Test_Chad', trusted_connection='yes') 

Windows 認証を介して Web アプリケーションをデータベースに接続するには、その他の構成が必要です。Web アプリケーションが IIS で匿名認証を使用している場合、データベース接続は、Web アプリが実行されているアプリケーション プールの ID を使用して行われます。この ID が設定されている場所のスクリーンショットを次に示します。

IIS アプリケーション プール ID

単純なデータベース認証を使用する場合は、 と に適切な値を指定uidpwd、 を削除しTrusted_Connection=yesます。

cnxn = pyodbc.connect(driver='{SQL Server}', server='SERVER\INSTANCE',  
                      database='Test_Chad', uid='username', pwd='password')
于 2012-10-05T15:20:19.963 に答える