Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过IIS7与MSSQL 2005服务器的pyodbc连接_Python_Sql Server 2005_Iis 7_Pyodbc - Fatal编程技术网

Python 通过IIS7与MSSQL 2005服务器的pyodbc连接

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}',

我在笔记本电脑上安装并配置了IIS7,并带有python cgi接口。我可以在Eclipse中运行python脚本,并从数据库中获得我想要的结果。但是当我从网页运行脚本时,我得到了一个身份验证错误。连接字符串似乎没有将凭据传递给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用户名和密码