Я использую 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}')