Python 通过IIS7与MSSQL 2005服务器的pyodbc连接
我在笔记本电脑上安装并配置了IIS7,并带有python cgi接口。我可以在Eclipse中运行python脚本,并从数据库中获得我想要的结果。但是当我从网页运行脚本时,我得到了一个身份验证错误。连接字符串似乎没有将凭据传递给SQL server。有什么想法吗Python 通过IIS7与MSSQL 2005服务器的pyodbc连接,python,sql-server-2005,iis-7,pyodbc,Python,Sql Server 2005,Iis 7,Pyodbc,我在笔记本电脑上安装并配置了IIS7,并带有python cgi接口。我可以在Eclipse中运行python脚本,并从数据库中获得我想要的结果。但是当我从网页运行脚本时,我得到了一个身份验证错误。连接字符串似乎没有将凭据传递给SQL server。有什么想法吗 import pyodbc import cgi import cgitb; cgitb.enable() cnxn = pyodbc.connect(driver='{SQL Server}',
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 = ''
:('28000',“[28000][Microsoft][ODBC SQL Server驱动程序][SQL Server]用户'NT AUTHORITY\\ANONYMOUS LOGON'登录失败。
(18456)(SQLDriverConnect);[28000][Microsoft][ODBC SQL Server驱动程序][SQL Server]用户“NT授权\\匿名登录”登录失败。(18456)”
args=('28000',r“[28000][Microsoft][ODBC SQL Server驱动程序][SQL…”用于用户“NT授权\匿名登录”。(18456)”
消息=“”
决定要使用哪种身份验证形式,数据库还是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\u Connection=yes
:
cnxn = pyodbc.connect(driver='{SQL Server}', server='SERVER\INSTANCE',
database='Test_Chad', uid='username', pwd='password')
如果已正确设置应用程序池安全性(即应用程序池用户在SQl Server上具有登录和访问权限),则需要配置匿名访问以使用应用程序池标识,而不是其默认值(IUSR)。转到“身份验证”部分IIS 7-->匿名身份验证-->右键单击以编辑-->选择使用应用程序池标识的选项。我将以下代码与标识一起使用:如图所示,但不起作用:
cnxn = pyodbc.connect(
"Driver={SQL Server Native Client 11.0};Server=MyServerName;Database=MyDbName;Trusted_Connection=yes;")
然后我只需将我的连接更改为下面的代码,就可以完美地使用Identity=Localsystem
cnxn = pyodbc.connect(
"Driver={SQL Server Native Client 11.0};Server=MyServerName;Database=MyDbName; uid=MyUsernameLoginDb; pwd=MyDbPasswordLoginToDB; ")
只需创建一个MYSQL用户并将其传递给uid和pwd 创建登录名为MyUser的密码=pass@123'; 创建用户MyUser以登录MyUser
它会工作的,不要忘记提供所需的架构访问。您想通过
uid
和pwd
属性使用数据库身份验证,还是使用Windows身份验证和'Trusted\u Connection=yes'
?谢谢,这是缺少的链接。我设置了一个本地SQL Server身份验证帐户,删除了受信任的连接选项,一切正常。我正在使用web服务器数据库。我收到登录失败错误,但我给出了Corect用户名和密码