有什么方法可以连接到仅使用来自 Linux 的 Python AD 身份验证的 SQL 服务器?

Is there any way to connect to a SQL Server that only uses AD auth with Python from Linux?

我尝试了几种不同的连接方式。它适用于用户名和密码,但受信任的连接不适用。配置 /etc/krb5.conf 后,我使用了 kinit username。我可以绑定我的用户,但出现错误:

SSPI Provider: Server not found in Kerberos database (851968)

我的连接字符串是:

Driver=ODBC Driver 17 for SQL Server;Server=servername.fqdn.com;Database=master;Trusted_Connection=yes;

您需要编辑连接字符串以包含 spn。 您可以通过 运行:

setspn -l servername\database

test-DbaSpn -ComputerName servername/database |Out-GridView -PassThru | Set-DbaSpn

找到正确的实例后,将其添加到连接字符串中。

Driver=ODBC Driver 17 for SQL Server;Server=servername.fqdn.com;Database=master;Trusted_Connection=yes;ServerSPN=MSSQLSvc/server.fqdn.com:instance;

如果您获得错误的 SPN,您可能会收到如下错误:

sspi provider: message stream modified

就我而言,是 servername:instance 让我失望了。我试图连接到实例并获取实例 spn 而不是实例的服务器 spn。

例如,当连接到数据库时,我使用了 instance.domain.com,port,它在 windows 上起作用。所以,我得到了那个实例的 SPN 并收到了

sspi provider: message stream modified

我向 DBA 询问了 SPN,他得到了 server.domain.com:instance

的正确 SPN