2

我在笔记本电脑上安装并配置了 IIS7,并使用了 python cgi 接口。我可以从 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()

例外:

<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 应用程序的应用程序池的标识来建立数据库连接。这是设置此身份的屏幕截图:

IIS 应用程序池标识

如果要使用简单的数据库身份验证,请为uidandpwd和 remove提供适当的值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 回答
1

我将以下代码与 Identity: 一起使用,如图所示,但不起作用:

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; ")
于 2020-06-15T12:03:27.753 回答
0

如果您正确设置了应用程序池安全性(即应用程序池用户在 SQl 服务器上具有登录和访问权限),那么您需要配置匿名访问以使用应用程序池标识而不是其默认值 (IUSR)。转到身份验证部分 IIS 7 --> 匿名身份验证 --> 右键单击​​以编辑 --> 选择使用应用程序池标识的选项。

于 2013-06-21T13:37:10.940 回答
0

只需创建一个 MYSQL 用户并将其传递给 uid 和 pwd。

使用密码创建登录 MyUser = 'pass@123'; 为登录 MyUser 创建用户 MyUser;

它会起作用,不要忘记提供所需的模式访问。

于 2020-12-03T17:41:37.297 回答