odbc无法连接到OS X Lion上的MSSQL数据源

时间:2012-12-14 03:44:09

标签: sql-server macos odbc freetds unixodbc

odbc isql无法连接到数据源:

 $ isql SMS_GTWY username password -v

返回:

 [S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
 [01000][unixODBC][FreeTDS][SQL Server]Unknown host machine name.
 [ISQL]ERROR: Could not SQLConnect

tsql没问题:

 $ tsql -S SERVER001 -U username -P password

返回:

 locale is "C/UTF-8/C/C/C/C"
 locale charset is "UTF-8"
 using default charset "UTF8"
 1> 

$ cat ~/.freetds.conf

 [SERVER001]
   host = 192.168.8.101
   port = 1433
   tds version = 8.0
   client charset = UTF8

$ cat ~/.odbc.ini

  [SMS_GTWY]
  Description = SERVER001 Server
  Driver      = freetds
  Database    = SMS_GTWY
  ServerName  = SERVER001
  TDS_Version = 7.1

$ cat ~/.odbcinst.ini

  [freetds]
  Description = MS SQL database access with FreeTDS
  Driver      = /usr/local/lib/libtdsodbc.so
  Setup       = /usr/local/lib/libtdsodbc.so
  UsageCount  = 1

freetdsunixODBC由家庭brew安装。

我在CentOS上有类似的设置和odbc isql到mssqlserver工作正常。有一个明显的区别,我没有在OS X上看到libtdsS.so安装。

在CentOS上

# cat /etc/odbcinst.ini

 [freetds]
 Description = MS SQL database access with FreeTDS
 Driver      = /usr/lib/libtdsodbc.so
 Setup       = /usr/lib/libtdsS.so 
 UsageCount  = 1

这是问题的原因吗?

P.S。 $ odbcinst -j返回:

 unixODBC 2.3.1
 DRIVERS............: /usr/local/Cellar/unixodbc/2.3.1/etc/odbcinst.ini
 SYSTEM DATA SOURCES: /usr/local/Cellar/unixodbc/2.3.1/etc/odbc.ini
 FILE DATA SOURCES..: /usr/local/Cellar/unixodbc/2.3.1/etc/ODBCDataSources
 USER DATA SOURCES..: /Users/horace/.odbc.ini
 SQLULEN Size.......: 8
 SQLLEN Size........: 8
 SQLSETPOSIROW Size.: 8

$ odbcinst -q -d返回:

 [freetds]

$ odbcinst -q -s返回:

 [SMS_GTWY]

3 个答案:

答案 0 :(得分:8)

重新安装isqlunixodbcfreetds)后,

--with-unixodbc正常工作:

 brew uninstall freetds
 brew uninstall unixodbc

 brew install unixodbc
 brew install freetds --with-unixodbc

现在,$ isql -v SMS_GTWY username password返回:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

信用:https://gist.github.com/565440

答案 1 :(得分:2)

确定。我也浪费了两天时间,但不想使用Homebrew或MacPorts。诀窍是使用unixODBC开关构建FreeTDS。这会生成odbc驱动程序(xxx.so),否则不会生成该驱动程序。首先,你需要 已安装XCode和命令行工具。网上有大量资源来展示如何做到这一点。

以下是我采取的步骤。

  1. 下载Latest Stable FreeTDS
  2. 下载Latest Stable unixODBC
  3. 打开包装。
  4. 请注意解压缩的unixODBC目录的完整路径。
  5. 从终端提示符导航到FreeTDS目录并发出以下命令。

    ./ configure - with-unixodbc = 步骤4中注明的路径
    使
    sudo make install

  6. 完成后,一切都应该在/ usr / local /中。您的驱动程序应位于/ usr / local / lib中。在/ usr / local / etc中编辑您的设置文件。希望这会有所帮助。

答案 2 :(得分:0)

对于使用MacPort的任何人来说,上面唯一不同的部分是以这种方式安装FreeTDS:

sudo port install freetds +mssql +odbc +universal

并且驱动程序库将在此处:

/opt/local/lib/libtdsodbc.so