我目前正在尝试使用PyODBC连接到SQL Server(我无法看到它,但有它的凭据)。我的代码可以在Windows桌面上工作,但移到RedHat Linux机器上时无法工作。我需要它在Linux上支持一个项目。
这是我的想法
server = 'tcp:myserver\inst1'
database = 'mydatabase'
username = 'myusername'
password = 'mypassword'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=' + server + ';DATABASE=' + database + ';UID=' + username + ';PWD=' + password)
这是我得到的错误:
pyodbc.OperationalError: ('HYT00', u'[HYT00] [unixODBC][Microsoft][ODBC Driver 13 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')
Windows版本和Linux版本之间的一个区别是驱动程序部分。Windows使用"{SQL Server}",而Linux版本使用"{ODBC Driver 13 for SQL Server}"。
在我的/etc/odbcinst.ini文件中,我有以下信息:
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.1
UsageCount=1
有人有什么建议吗?
2条答案
按热度按时间h7wcgrx31#
使用驱动程序路径而不是驱动程序名称。在示例中,使用完整的/opt/microsoft/msodbcsql/lib 64/libmsodbcsql-13.1.so.9.1
0g0grzrc2#
与Windows版本的Microsoft ODBC Drivers for SQL Server不同,Linux版本的驱动程序无法解析SQL Server示例名称。因此,在Windows客户端上,我们可以使用以下命令(前提是SQL Browser服务正在服务器上运行)
但是在Linux上不起作用,但是我们可以使用sqlserverport模块(我维护它)从SQL Browser服务检索端口号: