我正在尝试使用 iODBC 从我的 Mac 开发机器连接到 Microsoft SQL Server。无论我做什么,我都会收到Unable to connect to data source
来自 FreeTDS 驱动程序的错误消息。在查阅了各种手册、博客文章和 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
以上连接并有效,但是:
$ 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
由于我最终计划通过 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)')
我已经尝试了博客文章和 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),所以我假设转发是正确的。)