我发现了许多类似的问题,但没有一个解决方案适合我。这似乎是一件非常简单的事情,但我仍无法找到解决方案。
我使用无头ubuntu服务器连接到Windows Server 2008上的SQL Server,使用python脚本使用pyodbc。该脚本在我的本地Windows机器上运行完美,但是当我在ubuntu服务器上尝试时,我收到错误:
Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
我使用的连接字符串是:
connectionString='DRIVER={dbserverdsn};SERVER=10.23.11.10;DATABASE=Market;UID=usr;PWD=pwd;TDS_VERSION=7.2;PORT=1433'
有什么想法?提前谢谢
编辑:添加主文件
ODBC.INI
[dbserverdsn]
Driver = FreeTDS
Server = 10.23.11.10
Port = 1433
Database=Markets
TDS_Version = 7.2
ODBCINST.INI
[FreeTDS]
Description = v0.91 with protocol v7.2
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
freetds.conf
[global]
# TDS protocol version, use:
# 7.3 for SQL Server 2008 or greater (tested through 2014)
# 7.2 for SQL Server 2005
# 7.1 for SQL Server 2000
# 7.0 for SQL Server 7
tds version = 7.2
port = 1433
text size = 64512
# A typical Microsoft server
[dbserverdsn]
host = 10.23.11.10
port = 1433
tds version = 7.2
答案 0 :(得分:3)
Microsoft预安装了一个与SQL Server通信的驱动程序,Ubuntu没有。 FreeTDS提供了我使用过的最好的驱动程序(MS提供的驱动程序给了我一些问题)。以下是如何在Ubuntu上安装您的先决条件:
# Install pre-requesite packages
sudo apt-get install unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc
您需要配置/etc/freetds/freetds.conf以将unixODBC桥接到SQL Server下一步:
[global]
# TDS protocol version, use:
# 7.3 for SQL Server 2008 or greater (tested through 2014)
# 7.2 for SQL Server 2005
# 7.1 for SQL Server 2000
# 7.0 for SQL Server 7
tds version = 7.2
port = 1433
text size = 64512
# A typical Microsoft server
[dbserverdsn]
host = dbserver.domain.com
port = 1433
tds version = 7.2
在这里,您将unixODBC插入/etc/odbcinst.ini中的FreeTDS并提供FreeTDS驱动程序的路径:
[FreeTDS]
Description = v0.91 with protocol v7.2
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
最后但并非最不重要的是,编辑/etc/odbc.ini,以便Python / unixODBC可以看到整个堆栈和FreeTDS数据源:
[dbserverdsn]
Driver = FreeTDS
Server = dbserver.domain.com
Port = 1433
TDS_Version = 7.2
你可以使用' tsql'来测试Ubuntu命令行中的问题。和' isql'命令行实用程序并发布您收到的任何错误。
然后,为您的连接字符串:
connectionString='DRIVER={FreeTDS};SERVER=10.23.11.10;PORT=1433;DATABASE=Market;UID=*;PWD=*;TDS_VERSION=7.2'
祝你好运!