我正在尝试通过 ODBC 连接到 MS-SQL 服务器,这可能是最常见的问题之一,但是这个问题非常奇怪,因为相同的配置在我的本地机器上运行良好,我的意思是我在本地计算机上完成了所有操作并且正常运行,但现在在其他机器上却不工作。
我已经通过以下方式安装了必备软件包
sudo apt-get install unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc
我的配置
/etc/freetds/freetds.conf
# A typical Microsoft server
[SQLDemo]
host = xxx.xxx.xxx.xxx
port = 1433
tds version = 8.0 # I've tried 7.0, 7.2 as well
-----------------------------------------------
/etc/odbc.ini
[SQLDemo]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Server=xxx.xxx.xxx.xxx\SQL2014 #I've tried servername=SQLDemo as well
Database = MY_DB_NAME
-----------------------------------------------
/etc/odbcinst.ini
[ODBC]
Trace=Yes
TraceFile=/home/odbc_trace.log
[FreeTDS]
Description = TDS Driver (Sysbase/MS SQL)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
FileUsage = 1
我正在运行下面的一段代码并收到错误
cnnstr = 'DSN=%s;UID=%s;PWD=%s' % ('SQLDemo', 'xyz', 'xyz');
db = pyodbc.connect(cnnstr);
pyodbc.Error: ('08001', '[08001] [unixODBC][FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
我需要知道这里出了什么问题。我需要再次提及相同的配置/代码在我的本地计算机上有效。
两台机器Ubuntu 16.04
提前致谢
答案1
问题与目标机器中 SQL Server 实例的默认端口有关,该端口已更改为 1434。因此所有配置都是正确的,只需要调整端口号,并且在连接之前还要确保 SQL Server 的端口。