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

标签 sql-server macos pyodbc freetds iodbc

我正在尝试使用 iODBC 从我的 Mac 开发计算机连接到 Microsoft SQL Server。无论我做什么,我都会从 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),指定连接字符串而不是关键字参数等。我还通过 iODBC 生成了一个跟踪文件,我已将其粘贴 here ,但我无法从中收集到比错误消息更多的信息。

(我应该提到,我正在通过 SSH 使用 ~/.ssh/config 中的 LocalForward localhost:1433 production.someinstitution.edu:1433 行通过隧道连接到 SQL Server ,因为我的 IT 部门限制我只能从生产服务器的 IP 进行连接。它适用于 GUI 客户端 (SQuirreLSQL),所以我认为转发是正确的。)

最佳答案

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

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

关于sql-server - 在 Mac 上使用 iODBC 连接到 MS SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11963122/

相关文章:

C++ 使用 getline() 打印 : pointer being freed was not allocated in XCode

python - 得到??将 Netezza 与 Python 连接时作为 unicode 字符的输出

python - 如何使用 pyodbc 和 MS-Access 在 Python cursor.execute 中查看真正的 SQL 查询

c# - SQL 事务 - SQL Server 还是 C#?

c# - 批量复制错误 : The locale id '1025' of the source column 'CreatedBy' and the locale id '1033' of the destination column 'CreatedBy' do not match

cocoa - 设置 Cocoa 应用程序中按钮文本的格式

linux - 如何在 Mac OS X 中打开 Linux `.so` 文件

python 列表到带有列标题的数据框并删除数据类型

sql - 我想显示多次出现相同值的记录,但前提是相应的

c# - SQL Server CE 3.5 提前切断字符串 (C#)