Skip to main content
 首页 » 编程设计

python之pyodbc 通过 IIS 7 连接到 SQL 2005 服务器

2025年05月04日7qq号

我在笔记本电脑上安装和配置了 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')