Строка подключения к Teradata с использованием аутентификации Windows - PullRequest
0 голосов
/ 24 октября 2019

Я использую Python3.6 и pyodbc, чтобы попытаться подключиться к Teradata. Мне это нужно для сценария, который я хочу передать конечному пользователю для обновления данных. Я бы предпочел, чтобы каждому пользователю не приходилось инструктировать настраивать собственное DSN-соединение с определенным именем, которое я жестко кодирую в сценарии.

Я думаю, что у меня теперь правильный драйвер, а также имя сервера и базы данных,Что я не могу понять, так это как получить строку подключения, чтобы не требовать имя пользователя и пароль. Полезная информация: это для ОС Windows. Когда я захожу в ODBC-соединения в Windows, механизм подключения указывается как LDAP, и я также могу подключиться через программу Teradata.

Что работает: Соединение напрямую через программу Teradata (показывая, что сама Teradata знает, кто я) Использование DSN = "DSN_name", где DSN_Name - это имя для подключений ODBC, найденных в Windows. Показывая, что я могу подключиться через DSN.

- Просмотр источника данных ODBC Администратор показывает, что драйвер соответствует моему. «Имя или идентификатор сервера» соответствует «имени сервера» ниже.

Попытка:

connect_string = 'Driver={Teradata Database ODBC Driver 
16.20};DBCName=servername;Database=db_name;MechanismName=LDAP;UseIntegratedSecurity=1;'
con = pyodbc.connect(connect_string)

, что дает:

pyodbc.Error: ('HY000', '[HY000] [Teradata] [ODBC] (11210) Операция не разрешена в состоянии транзакции. (11210) (SQLExecDirectW) ')

connect_string = 'Driver={Teradata Database ODBC Driver 
16.20};DBCName=servername;Database=db_name;MechanismName=LDAP;'
con = pyodbc.connect(connect_string)

или

connect_string = 'Driver={Teradata Database ODBC Driver 
16.20};DBCName=servername;Database=db_name;Authentication=LDAP;'
con = pyodbc.connect(connect_string)

, что дает: pyodbc. InterfaceError: ('28000', '[28000] [Teradata] [ODBC Teradata Driver] (2) Невозможно войти с выбранным механизмом аутентификации. (2) (SQLDriverConnect)')

Я также попробовал несколькодругие предложенные механизмы аутентификации в дополнение к LDAP, но это тот, который указан в соединениях Teradata и ODBC.

В SQL_Server я использую что-то вроде trust_connection = yes для достижения того же эффекта, который я желаю, который, кажется, не работаетв приведенных выше примерах.

error:
pyodbc.OperationalError: ('08001', '[08001] [Teradata][ODBC] (10380) Unable to establish connection 
with data source. Missing settings: {[Password] [Username]} (10380) (SQLDriverConnect)')
...