gpt4 book ai didi

python - 如何使用 Windows 身份验证通过 Python 从另一个域中的 Windows 工作站连接到 MS SQL Server

转载 作者:太空狗 更新时间:2023-10-29 21:54:43 24 4
gpt4 key购买 nike

我正在尝试连接到 SQL server 2000安装在 Windows server 2003来自 Windows Server 2008 R2使用 Python 3.4pyodbc模块。这些服务器位于不同的 AD 域中。 Windows only SQL Server 上启用了身份验证,我无法更改它。

drv = '{SQL server}'
svr = 'sql.my-domain.local'
usr = 'my-domain.local\testuser'
pwd = 'password'
db = 'testdb'
pyodbc.connect(driver=drv, server=svr, user=usr, password=pwd, database=db)

上面的连接失败并出现以下错误:

pyodbc.Error: ('28000', "[28000] [Microsoft][ODBC SQL Server Driver][SQLServer] 
Login failed for user 'svx-iroot.local\\sqlexecutive'.
Reason: Not associated with a trusted SQL Server connection. (18452) (SQLDriverConnect)")

有一些问题,比如this one , 建议添加 trusted_connection='yes' pyodbc 的参数用于支持 Windows 身份验证的连接,但在这种情况下它没有帮助,因为使用此选项使用本地凭据并且我需要明确提供凭据,因为原始工作站位于不同的 AD 域中。

创建User DSNODBC Data Source AdministratorSQL Server驱动程序失败并出现上述相同的错误。

有没有办法让它工作?

同时我安装了FreeTDS Windows 驱动程序来自 http://sourceforge.net/projects/freetdswindows/并使用 tsql 进行连接测试实用程序确实有效:

tsql -S sql.my-domain.local -U my-domain.local\testuser -P password

但是FreeTDS驱动程序在 ODBC Data Source Administrator 中不可用. FreeTDS驱动程序传统上与 unixODBC 一起使用.是否可以在 Windows 环境中使用此驱动程序 pyodbc

更新:

原来是FreeTDS上面提到的二进制文件包括 unixODBC以及。 freetds.conf的配置, odbc.iniodbcinst.ini像描述的那样制作,例如,here .但在这一点上我不明白如何pyodbc应该知道 FreeTDS驱动程序存在。确实尝试与 FreeTDS 进行连接驱动程序失败并出现以下错误:

pyodbc.Error: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] 
Data source name not found and no default driver specified (0) (SQLDriverConnect)')

Pyodbc只知道 ODBC Data Source Administrator 中可用的驱动程序:

ODBC Data Source Administrator screenshot

有两种前进的方式。第一个选项是制作 ODBC Data Source Administrator意识到FreeTDS司机。为此,需要在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers 中创建一个新值名字FreeTDS和值(value)Installed .然后是一个新 key FreeTDS创建于 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INIFreeTDS 的设置驱动程序在此注册表项中设置为字符串值。

FreeTDS registry settings

完成此程序后FreeTDS驱动程序在 ODBC Data Source Administrator 中可用但连接仍然失败。尝试创建 User DSNODBC Data Source AdministratorFreeTDS失败,错误代码为 193这是由64位不兼容引起的ODBC Data Source Administrator和 32 位版本 FreeTDS .我没有 64 位版本的 FreeTDS可用的。有可能从源代码编译它。

另一种选择是制作pyodbc使用另一个驱动程序管理器 ( unixODBC ) 而不是 ODBC Data Source Administrator .还不知道如何处理。

最佳答案

我最终使用了 pymssql版本 2.1.3 安装了从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql 获得的轮子.它包含 FreeTDS,开箱即用:

import pymssql
conn = pymssql.connect(
host=r'sql.my-domain.local',
user=r'my-domain.local\testuser',
password='password',
database='testdb'
)
cursor = conn.cursor()
cursor.execute('SELECT * FROM testtable')

关于python - 如何使用 Windows 身份验证通过 Python 从另一个域中的 Windows 工作站连接到 MS SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com