【问题标题】:osql can not find IP address, tsql works on Ubuntuosql 找不到 IP 地址,tsql 在 Ubuntu 上工作
【发布时间】: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 命令没有安装。

标签: linux odbc freetds


【解决方案1】:

今天的课程 - 在将内容发布到 Stack Overflow 之前 - 我应该注意到我的端口号不知何故从 1433 更改为 1044。不知道我是如何做到的,但这就是问题所在。

SQL Server 期望端口 1433 上的连接。不是 1044。有些日子我真的不喜欢计算机。 . . .

【讨论】:

    【解决方案2】:

    我收到一个 IP 地址错误,因为我的 odbc.ini 指定的是“服务器”设置而不是“服务器名称”设置。前者是实际的服务器,后者是 freetds.conf 中的一个条目。

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 2015-06-22
      • 2011-04-07
      • 2017-06-20
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 2012-02-08
      相关资源
      最近更新 更多