Подключение к MS SQL Server с использованием python в Linux с учетными данными Windows

Как указано в одном из комментариев, этот ответ уже устарел. Я регулярно и регулярно использую GSSAPI для аутентификации с Linux на SQL Server 2008 R2, но в основном с менеджером EasySoft ODBC и (коммерческим) драйвером EasySoft ODBC SQL Server.

В начале 2009 года мне и mssql моему коллеге удалось подключиться sql-server к экземпляру SQL Server 2005 sql-srever из Solaris 10 с помощью GSSAPI pythonista (учетные данные Kerberos), используя pythonista DBB :: Perl, поверх сборки freetds FreeTDS, связанной с конкретной python версией библиотек kerberos freetds MIT. Уловка заключалась - и sql-server в это немного трудно поверить, но python-interpreter я проверил это, просматривая sql-server исходный код FreeTDS - указать sql-srever нулевую длину user_name. Если длина строки mssql user_name равна 0, то код freetds FreeTDS попытается использовать sql-srever GSSAPI (если эта поддержка python была скомпилирована). Мне unixodbc не удалось сделать это через python Python и pyodbc, так как unixodbc я не мог понять, как заставить python-shell ODBC передавать user_name sql-srever нулевой длины.

Здесь, в коде pyodbc perl ... есть множество возможностей pyodbc для поломки файлов конфигурации, таких pythonic как .freetds.conf и т. д. Я, кажется, помню, что python-interpreter принципал должен был быть ms-sql-server в верхнем регистре, но мои pyodbc примечания, похоже, не согласны pythonic с этим.

$serverprincipal = 'MSSQLSvc/foo.bar.yourdomain.com:1433@YOURDOMAIN.COM';
$dbh = DBI->connect("dbi:Sybase:server=THESERVERNAME;kerberos=$serverprincipal", '', '');

Вам необходимо знать, как sql-server использовать служебную программу unixodbc setspn, чтобы сервер SQL python-shell Server использовал соответствующее ms-sql-server имя участника безопасности.

Я mssql ничего не знаю о том, что python касается Kerberos, потому pythonista что наша среда была настроена pythonic опытным гуру Kerberos и имеет python-shell такие причудливые вещи, как pyodbc взаимное доверие, установленное python-shell между доменом AD, в котором py работает SQL Server, и Домен sql-server Kerberos, в котором работал ms-sql-server мой клиент.

Есть код http://code.google.com/p/libsqljdbc-auth/, который pythonista выполняет аутентификацию ms-sql-server GSSAPI с Linux на SQL Server, но mssql это только Java. Автор (который, кажется, знает pythonic свое дело) также внес аналогичный python-interpreter патч в проект jTDS, который python-interpreter работает с более поздними pythonista версиями Java, в которые unixodbc встроен GSSAPI.

Итак, все sql-srever части на месте, это просто python-interpreter большой запутанный беспорядок, пытающийся freetds заставить их всех работать sql-server вместе. Я обнаружил, что python-shell интеграция pyodbc с unixODBC sql-server на FreeTDS odbc с TDS довольно pyodbc сложно отслеживать / отлаживать. Работать ms-sql-server с perl, поскольку это была ms-sql-server довольно тонкая оболочка sql-server поверх CT-Lib, было намного mssql проще.

python

sql-server

pyodbc

freetds

unixodbc

2022-10-03T23:25:52+00:00
Вопросы с похожей тематикой, как у вопроса:

Подключение к MS SQL Server с использованием python в Linux с учетными данными Windows