【发布时间】:2012-11-09 21:53:11
【问题描述】:
我在 Ubuntu (12.10) 上遇到 ODBC 问题。最奇怪的部分 - 我在一年前设置了所有这些,直到最近才遇到任何问题。
我正在尝试使用 FreeTDS / ODBC 连接到 MS SQL Server。我主要使用 sqsh 与服务器通信,但是当我需要进行任何分析时,我使用 RODBC 将数据拉入 R。昨天,当我尝试这样做时,它失败了。
我可以使用 sqsh / tsql 连接到数据库。这让我觉得 FreeTDS 仍然设置正确。问题似乎出在 ODBC 方面。所以,我拔出 osql,我得到了最奇怪的错误。
checking shared odbc libraries linked to isql for default directories...
strings: '': No such file
trying /tmp/sql ... no
trying /tmp/sql ... no
trying /etc ... OK
checking odbc.ini files
reading /home/andy/.odbc.ini
[CANS] found in /home/andy/.odbc.ini
found this section:
[CANS]
Description = FreeTDS
Driver = FreeTDS
Servername = Portland
Database = CANS
UID = NotRelevant
PWD = NotRelevant
Port = 1433
looking for driver for DSN [CANS] in /home/andy/.odbc.ini
found driver line: " Driver = FreeTDS"
driver "FreeTDS" found for [CANS] in .odbc.ini
found driver named "FreeTDS"
"FreeTDS" is not an executable file
looking for entry named [FreeTDS] in /etc/odbcinst.ini
found driver line: " Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so"
found driver /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so for [FreeTDS] in
odbcinst.ini
/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so is an executable file
Using ODBC-Combined strategy
DSN [CANS] has servername "Portland" (from /home/andy/.odbc.ini)
cannot read "/home/andy/.freetds.conf"
/etc/freetds/freetds.conf is a readable file
looking for [Portland] in /etc/freetds/freetds.conf
found this section:
[Portland]
host = 63.***.**.***
port = 1433
tds version = 8.0
client charset = UTF-8
looking up hostname for ip address 63.***.**.***
osql: no IP address found for "host145.actwd.net"
我不明白为什么 osql 在它已经拥有 IP 地址时仍试图解析它。该服务器有相当多的 IP 阻止以帮助保护它,您只能从一组列入白名单的 IP 地址访问它。您无法对该地址进行 DNS 查找。我在办公室所以我的 IP 地址很好,而且我可以使用 tsql 连接,所以这部分应该没有问题,但这看起来像是故障点。
想法?
另外一点,actwd.net 是我们的主机。所以,这并不完全是滑稽的,我只是不知道为什么它不使用我正在处理它的 IP 地址。
【问题讨论】:
-
osql确实:HOST=$(host ${HOST} | awk '/domain/ {print $5}' | sed 's/\.$//')所以如果出现任何问题,它会告诉你“没有 DNS 主机名”。在我的例子中,host命令没有安装。