我在笔记本电脑上安装和配置了 IIS7,并使用 python cgi 接口(interface)。我可以从 Eclipse 中运行 python 脚本并从数据库中获取我要查找的结果。但是当我从网页运行脚本时,出现身份验证错误。连接字符串似乎没有将凭据传递给 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()
异常(exception):
<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 = ''
请您参考如下方法:
决定您要使用哪种形式的身份验证,数据库还是 Windows。您不能同时使用两者。
如果您想使用 Windows 身份验证,请将您的连接设置更改为以下内容:
cnxn = pyodbc.connect(driver='{SQL Server}', server='SERVER\INSTANCE',
database='Test_Chad', trusted_connection='yes')
通过 Windows 身份验证将 Web 应用程序连接到数据库需要一些其他配置。如果您的 Web 应用程序在 IIS 中使用匿名身份验证,则将使用运行该 Web 应用程序的应用程序池的标识建立数据库连接。这是设置此身份的屏幕截图:
如果您想使用简单的数据库身份验证,请为 uid 和 pwd 提供适当的值,并删除 Trusted_Connection=yes:
cnxn = pyodbc.connect(driver='{SQL Server}', server='SERVER\INSTANCE',
database='Test_Chad', uid='username', pwd='password')
