'домен \ пользователь' в python неправильная обработка backsla sh в строке - PullRequest
0 голосов
/ 08 апреля 2020

Я использую pyodb c для подключения к базе данных MS SQL с учетными данными БД, которые отлично работают.

Однако для решения Po C мне нужно подключиться к нему как пользователь в другой домен.

Я создал словарь учетных данных, который импортируется в основной скрипт. Ниже приведен фрагмент сообщения с проблемным c пользователем:

creds = {
...
 'amp': {'u': 'domain\\user' # double backslash to escape the \
...
}

А ниже приведены мои параметры для механизма ms sql в виде строки f с использованием значений из словаря creds.

params = quote_plus(f"Driver={driver};Server={creds['amp']['s']};Database={creds['amp']['d']};uid={creds['amp']['u']};pwd={creds['amp']['p']}")

Это возвращает следующую ошибку:

pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'domain\\user'. (18456) (SQLDriverConnect); [28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'domain\\user'. (18456)")

Я пытался:

'домен \ пользователь' r'домен \ пользователь ', жесткое кодирование' домен \ user 'в строке параметров

ничего не создает "домен \ пользователь", чтобы разрешить соединение с БД.

Когда я go через SSMS, я могу без проблем подключиться, используя ту же учетную запись.

PS. Перед отправкой я прошел через многочисленные вопросы по стеку, поговорил с python другом, не повезло.

PS2. Стек, кажется, назначил этот вопрос sql серверу, а не python? Сожалею!

Хорошо, я заставил это работать, используя Trusted_Connection=yes в моих параметрах, но вопрос все еще остается. Как набрать строки домена \ пользователя, чтобы можно было их использовать?

params2 = quote_plus(f"Driver={driver};Server={creds['amp']['s']};Database={creds['amp']['d']};Trusted_Connection=yes")
ampengine = sql.create_engine(f'mssql+pyodbc:///?odbc_connect={params2}')

1 Ответ

0 голосов
/ 08 апреля 2020

Чтобы использовать учетную запись Windows / Domain, вы должны войти в систему под этой учетной записью. SQL Сервер не позволяет вам подключаться как пользователь, к которому вы не подключены, если только вы не используете SQL Аутентификация.

Предполагается, что на вашем сервере включена аутентификация в смешанном режиме. Вам нужно будет либо создать пользователя SQL для этого пользователя, либо подключиться из его домена, пока он вошел в систему как он.

...