8

odbcisql无法连接到数据源:

 $ 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

freetds并且unixODBC是在家安装的brew

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

# cat /etc/odbcinst.ini在 CentOS 上:

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

这是问题的原因吗?

ps$ 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]
4

3 回答 3

8

isql重新安装unixodbcfreetds--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

于 2012-12-14T09:24:43.040 回答
2

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

这是我采取的步骤。

  1. 下载最新的稳定版 FreeTDS
  2. 下载最新稳定的 unixODBC
  3. 拆开两个。
  4. 请注意解压后的 unixODBC 目录的完整路径。
  5. 从终端提示导航到 FreeTDS 目录并发出以下命令。

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

完成后,一切都应该在 /usr/local/ 中。您的驱动程序应该在 /usr/local/lib 中。在 /usr/local/etc 中编辑您的设置文件。希望这可以帮助。

于 2013-11-11T18:21:29.197 回答
0

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

sudo port install freetds +mssql +odbc +universal

驱动程序库将在这里:

/opt/local/lib/libtdsodbc.so
于 2016-01-03T03:58:46.620 回答