有什么方法可以连接到仅使用来自 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
我尝试了几种不同的连接方式。它适用于用户名和密码,但受信任的连接不适用。配置 /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