Невозможно выполнить windows аутентификацию для SQL Сервера с использованием python - PullRequest
0 голосов
/ 28 января 2020
Код

My Python, показанный ниже, написан для создания SQL соединения с сервером с использованием аутентификации Windows. У меня есть ограничения на использование библиотеки 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)

Исключение:

Трассировка (последний последний вызов):

Файл "C: \ Arelle-master \ venv1 \ lib \ site-packages \ adodbapi \ adodbapi.py", строка 113, в файле connect
co.connect (kwargs)

Файл "C: \ Arelle-master \ venv1 \ lib \ site-packages \ adodbapi \ adodbapi.py ", строка 275, в connect
self.connector.Open () # Открыть соединение ADO

File" ", строка 3, в открытом
файле" C: \ Arelle-master \ venv1 \ lib \ site-packages \ win32com \ client \ dynamici c .py ", строка 287, в ApplyTypes
result = self. oleobj .InvokeTypes (* (dispid, LCID, wFlags, retType, argTypes) + args)

pywintypes.com_error: (-2147352567, 'Exception произошло. ', (0, «Поставщик», «Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если доступно. Никаких работ не было.», Нет, 1240640, -2147217887), Нет)

Во время обработки вышеупомянутого исключения, другое исключение oc curred:

Трассировка (последний последний вызов):

Файл "winAuthentication.py", строка 8, в
conn = adodbapi.connect ("PROVIDER = MSOLEDBSQL; Источник данных = {0}; База данных = {1}; Интегрированная безопасность = True; ". Формат (_SERVER_NAME, _DATABASE)) *

Файл" C: \ Arelle-master \ venv1 \ lib \ site-packages \ adodbapi \ adodbapi.py ", строка 117, в соединении
поднять api.OperationalError (e, сообщение)

adodbapi.apibase.OperationalError: (com_error (-2147352567, 'Возникло исключение.', (0, «Поставщик», «Многошаговая операция OLE DB вызвала ошибки. Проверьте каждое значение состояния OLE DB, если оно доступно. Никакой работы сделано не было. ', Нет, 1240640, -2147217887), Нет),' Ошибка при открытии соединения с "PROVIDER = MSOLEDBSQL; Источник данных = MSSQLSERVER01; База данных = TESTDB; Интегрированная безопасность = True;" ')

1 Ответ

0 голосов
/ 28 января 2020

Вы пробовали Trusted_Connection = да? Вот моя строка подключения, которая использует windows аутентификацию (используя pyodb c), но должна иметь тот же параметр соединения, а не 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'
...