【发布时间】:2018-09-16 16:05:57
【问题描述】:
我正在尝试使用 pyodbc 从 linux 机器连接到 windows SQL Server。
我确实有一些限制:
- 需要使用 windows 域帐户登录
- 需要使用python3
- 需要从 Linux 到 Windows 来做
- 需要连接到特定实例
我按照 microsoft 的描述设置了环境并让它工作(我可以导入 pyodbc 并使用配置的 mussel 驱动程序)。
我不熟悉 Windows 域身份验证等等,所以这就是我的问题所在。
我的连接字符串:
DRIVER={ODBC Driver 17 for SQL Server};SERVER=myserver.mydomain.com;PORT=1433;DATABASE=MyDatabase;Domain=MyCompanyDomain;Instance=MyInstance;UID=myDomainUser;PWD=XXXXXXXX;Trusted_Connection=yes;Integrated_Security=SSPI
假设应该使用“Trusted_Connection”来使用 Windows 域身份验证,而不是直接使用 SQL 服务器进行身份验证。
运行时出现的错误pyodbc.connect(connString):
pyodbc.Error: ('HY000', '[HY000] [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]SSPI Provider: No Kerberos credentials available (851968) (SQLDriverConnect)')
从我读到的其他来源,这应该可以在 Windows 上运行,因为此代码将使用当前登录用户的凭据。
我的问题是如何使用 Windows 域凭据从 Linux 连接到 Windows SQL Server 实例。
【问题讨论】:
-
我相当肯定微软的 Linux ODBC 驱动程序 (msodbcsql) 只支持使用 Windows 凭据连接到 SQL Server 实例的 Kerberos。如果您没有适当的 Kerberos 设置,那么您可以改用 FreeTDS ODBC,因为它能够使用旧的 NTLMv2 协议(如果 SQL Server 接受它)。
-
谢谢!我会尝试使用 FreeTDS 驱动程序
标签: python sql linux windows pyodbc