Я никогда не задаю вопросы на форумах, так как обычно могу найти ответ где-нибудь на веб-сайте.
Однако в этом случае я не могу.
Резюме: я могу подключиться к базе данных и запросить ее с помощью Аутентификация Kerberos через Azure Data Studio и t sql с FreeTDS. Я не могу подключиться к pyodb c. Я пробовал десятки разных конфигураций, но безуспешно.
Моя конечная цель - подключиться к серверной БД MS SQL с помощью python.
Спасибо за любой ввод.
Фон
macOS локального компьютера 10.15.4 Подключение к VPN, необходимое для аутентификации kerberos Успешно запрошены БД из Azure База данных Data Studio - Microsoft SQL Server 2016
FreeTDS
t sql -S -U 'directory \ username' -> Работает, может запрашивать БД
i sql
i sql dsn_name 'directory \ username' 'password'
error DIAG [42000] [FreeTDS] [SQL Server] Ошибка входа. Логин входит в ненадежный домен и не может использоваться с Windows аутентификацией.
i sql dsn_name 'directory \ username'
Ошибка: DIAG [42000] [FreeTDS] [SQL Сервер] Ошибка входа. Логин входит в ненадежный домен и не может использоваться с аутентификацией Windows.
pyodb c
cnxn = pyodb c .connect ('DSN = dsn_name; Trusted_Connection = yes ')
ошибка: pyodb c .ProgrammingError: (' 42000 ',' [42000] [FreeTDS] [SQL Server] Вход в систему не выполнен. Вход в систему от ненадежного домен и не может использоваться с Windows аутентификацией. (18452) (SQLDriverConnect) ')
cnxn = pyodb c .connect (' DSN = dsn_name; UID = каталог \ username; PWD = "пароль") ')
ошибка: DIAG [01000] [FreeTDS] [SQL Сервер] Не удалось подключиться к адаптивному серверу pyodb c .OperationalError: (' 08001 ',' [08001] [FreeTDS] [SQL Сервер] Невозможно подключиться к источнику данных (0) (SQLDriverConnect) ')
Конфигурация
krb5.conf
libdefaults
default_realm = домен
[realms]
domain_same_as_default = {
kd c = kdc_address
}
ODB c .ini
[dsn_name]
Описание = MS SQL Сервер
Драйвер = FreeTDS
Имя сервера = имя_сервера
odbcinst.ini
[FreeTDS]
Описание = Драйвер FreeTDS для Linux & MS SQL
Драйвер = / usr / local /lib/libtdsodbc.so
Setup = / usr / local / lib / libtdsodb c .so
UsageCount = 1
[ODBC] Trace = Да
TraceFile = / dev / stdout
freetds.conf
[имя_сервера] host = ip_address
port = port_num
database = db_name
REALM = DOMAIN