无法使用 python 对 SQL 服务器执行 windows 身份验证

Unable to perform windows authentication for SQL Server using python

我的 Python 下面显示的代码被编写为使用 Windows 身份验证创建 SQL 服务器连接。我有使用 adodbapi 库进行数据库连接的限制。

谁能告诉我这段代码中缺少什么?我参考了图书馆的文档,但没有提到 Windows 身份验证。

我参考了很多关于该异常的文章。但是他们似乎对理解异常的性质及其解决方案没有帮助。

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

代码:

import configparser
import adodbapi
config = configparser.ConfigParser()
config.read("C:/plugin/configsql.ini")
_SERVER_NAME = config['SQL']['SERVER_NAME']
_DATABASE = config['SQL']['DATABASE']
conn = adodbapi.connect("PROVIDER=MSOLEDBSQL;Data Source={0};Database={1};Integrated Security = True;".format(_SERVER_NAME,_DATABASE))
print(conn)

异常:

Traceback (most recent call last):

File "C:\Arelle-master\venv1\lib\site-packages\adodbapi\adodbapi.py", line 113, in connect
co.connect(kwargs)

File "C:\Arelle-master\venv1\lib\site-packages\adodbapi\adodbapi.py", line 275, in connect
self.connector.Open() # Open the ADO connection

File "", line 3, in Open
File "C:\Arelle-master\venv1\lib\site-packages\win32com\client\dynamic.py", line 287, in ApplyTypes
result = self.oleobj.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)

pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Provider', 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.', None, 1240640, -2147217887), None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "winAuthentication.py", line 8, in
conn = adodbapi.connect("PROVIDER=MSOLEDBSQL;Data Source={0};Database={1};Integrated Security = True;".format(_SERVER_NAME,_DATABASE))

File "C:\Arelle-master\venv1\lib\site-packages\adodbapi\adodbapi.py", line 117, in connect
raise api.OperationalError(e, message)

adodbapi.apibase.OperationalError: (com_error(-2147352567, 'Exception occurred.', (0, 'Provider', 'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.', None, 1240640, -2147217887), None), 'Error opening connection to "PROVIDER=MSOLEDBSQL;Data Source=MSSQLSERVER01;Database=TESTDB;Integrated Security = True;"')

你试过了吗Trusted_Connection=是?这是我的连接字符串,它使用 windows 身份验证(使用 pyodbc),但应该是相同的连接参数,而不是 Integrated Security。

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=ServerName;'
                      'Database=DatabaseName;'
                      'Trusted_Connection=yes;')

或者 Integrated Security = SSPI,发现这里提到 http://adodbapi.sourceforge.net/quick_reference.pdf

 'Integrated Security=SSPI'