【问题标题】:Unable to perform windows authentication for SQL Server using python无法使用 python 对 SQL Server 执行 Windows 身份验证
【发布时间】:2020-01-28 19:59:51
【问题描述】:

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

请谁能告诉我这段代码缺少什么?我参考了该库的文档,但没有提及 Windows 身份验证。

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

多步 OLE DB 操作产生错误。检查每个 OLE DB 状态值(如果可用)。没有完成任何工作。

代码:

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(最近一次调用最后一次):

文件“C:\Arelle-master\venv1\lib\site-packages\adodbapi\adodbapi.py”,第 113 行,在连接中
co.connect(kwargs)

文件“C:\Arelle-master\venv1\lib\site-packages\adodbapi\adodbapi.py”,第 275 行,在连接中
self.connector.Open() # 打开ADO连接

文件“”,第 3 行,在 Open
ApplyTypes
中的文件“C:\Arelle-master\venv1\lib\site-packages\win32com\client\dynamic.py”,第 287 行 结果 = self.oleobj.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)

pywintypes.com_error: (-2147352567, '发生异常。', (0, 'Provider', '多步 OLE DB 操作产生错误。检查每个 OLE DB 状态值(如果可用)。没有完成任何工作。' , 无, 1240640, -2147217887), 无)

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):

文件“winAuthentication.py”,第 8 行,在
conn = adodbapi.connect("PROVIDER=MSOLEDBSQL;Data Source={0};Database={1};Integrated Security = True;".format(_SERVER_NAME,_DATABASE))

文件“C:\Arelle-master\venv1\lib\site-packages\adodbapi\adodbapi.py”,第 117 行,在连接中
raise api.OperationalError(e, message)

adodbapi.apibase.OperationalError: (com_error(-2147352567, '发生异常。', (0, 'Provider', '多步 OLE DB 操作产生错误。如果可用,请检查每个 OLE DB 状态值。没有工作已完成。', None, 1240640, -2147217887), None), '打开与“PROVIDER=MSOLEDBSQL;Data Source=MSSQLSERVER01;Database=TESTDB;Integrated Security = True;”的连接时出错')

【问题讨论】:

    标签: sql-server python-3.x oledbconnection adodbapi


    【解决方案1】:

    您是否尝试过 Trusted_Connection=yes?这是我使用 Windows 身份验证(使用 pyodbc)的连接字符串,但应该是相同的连接参数,而不是集成安全性。

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

    或者可能是集成安全 = SSPI,发现这里提到了 http://adodbapi.sourceforge.net/quick_reference.pdf

     'Integrated Security=SSPI'
    

    【讨论】:

    • 它不起作用。它抛出异常 - pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft OLE DB Driver for SQL Server', 'Invalid connection string attribute', None, 0, -2147217843), None)
    • 另外,您可能想查看这些较旧(但可能类似)的问题/答案? stackoverflow.com/questions/6086341/…
    • 谢谢。有效。更新'Integrated Security=SSPI'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2023-03-07
    • 2023-03-19
    • 1970-01-01
    • 2017-07-28
    • 2019-03-06
    相关资源
    最近更新 更多