在Mac上使用iODBC连接到MS SQL Server

jos*_*nix 9 sql-server macos pyodbc freetds iodbc

我正在尝试使用iODBC从我的Mac开发机器连接到Microsoft SQL Server.无论我做什么,我都会收到Unable to connect to data sourceFreeTDS驱动程序的错误消息.在查阅了各种手册,博客文章和StackOverflow问题之后,我就完蛋了.

我正在使用Mac OS X 10.7.4,通过Homebrew安装FreeTDS版本0.91.这是我正在做的事情:

$ brew install freetds
$ mkvirtualenv odbc
$ workon odbc
$ pip install pyodbc

$ tsql -H localhost -U mydbusername -P mydbpassword -p 1433 
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
1> quit
Run Code Online (Sandbox Code Playgroud)

以上连接和工作,但:

$ iodbctest
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0607.1008

Enter ODBC connect string (? shows list): driver={TDS};server=localhost;uid=mydbusername;pwd=mydbpassword;database=mydbname
1: SQLDriverConnect = [FreeTDS][SQL Server]Unable to connect to data source (0) SQLSTATE=08001
1: ODBC_Connect = [FreeTDS][SQL Server]Unable to connect to data source (0) SQLSTATE=08001
Run Code Online (Sandbox Code Playgroud)

由于我最终计划通过PyODBC使用它,我也试过了:

$ python
Python 2.7.3 (default, Jun 22 2012, 00:35:38) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyodbc
>>> c = pyodbc.connect(driver='/usr/local/lib/libtdsodbc.so', host='localhost', name='mydbname', uid='mydbusername', pwd='mydbpassword')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pyodbc.Error: ('08001', '[08001] [FreeTDS][SQL Server]Unable to connect to data source (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)

我已尝试过在博文和SO帖子中建议的各种方式......在ODBC管理器中创建DSN,创建一个~/.odbc.ini,尝试使用unixODBC(不能与PyODBC一起使用),指定连接字符串而不是关键字args,我也通过iODBC制作了一个跟踪文件,我在这里粘贴,但是我无法从错误信息中收集到更多的信息.

(我应该提一下,我通过SSH连接到SQL Server的连接与LocalForward localhost:1433 production.someinstitution.edu:1433我的线路~/.ssh/config,因为我的IT部门限制我只从生产服务器的IP连接.它适用于GUI客户端(SQuirreLSQL)所以我假设转发是正确的.)

sun*_*hit 3

如果是无 DSN 连接,则应在连接字符串中使用“端口”参数。

否则,您的端口可以在 DSN 或驱动程序配置中指定(分别为 odbc.ini 和 freetds.conf)