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
freetds
和unixODBC
由家庭brew
安装。
我在CentOS上有类似的设置和odbc isql到mssqlserver工作正常。有一个明显的区别,我没有在OS X上看到libtdsS.so
安装。
# 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]
答案 0 :(得分:8)
isql
和unixodbc
(freetds
)后, --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>
答案 1 :(得分:2)
确定。我也浪费了两天时间,但不想使用Homebrew或MacPorts。诀窍是使用unixODBC开关构建FreeTDS。这会生成odbc驱动程序(xxx.so),否则不会生成该驱动程序。首先,你需要 已安装XCode和命令行工具。网上有大量资源来展示如何做到这一点。
以下是我采取的步骤。
从终端提示符导航到FreeTDS目录并发出以下命令。
./ configure - with-unixodbc = 步骤4中注明的路径
使
sudo make install
完成后,一切都应该在/ usr / local /中。您的驱动程序应位于/ usr / local / lib中。在/ usr / local / etc中编辑您的设置文件。希望这会有所帮助。
答案 2 :(得分:0)
对于使用MacPort的任何人来说,上面唯一不同的部分是以这种方式安装FreeTDS:
sudo port install freetds +mssql +odbc +universal
并且驱动程序库将在此处:
/opt/local/lib/libtdsodbc.so