Неизвестное имя хост-машины. на FreeBSD + unixODBC + FreeTDS

У меня возникли проблемы с подключением к Microsoft SQL Server 2012 с моего сервера FreeBSD 10.1.

Установил FreeTDS и unixODBC через порты. Я скомпилировал FreeTDS с поддержкой unixODBC. Это мой freetds.conf:

    [server1]
      host = 192.168.100.147
      port = 1433
      tds version = 7.2

Вызов tsql работает нормально.

Но когда я пытаюсь подключиться через odbc с помощью «osql» или «isql», соединение прерывается со следующей ошибкой:

checking shared odbc libraries linked to isql for default directories...
    trying /tOH ... no
    trying /tOH ... no
    trying /tmp/sqlH ... no
    trying /tmp/sqlH ... no
    trying /usr/locH ... no
    trying /usr/locH ... no
    trying /tmp/sql.log ... no
    trying /home ... no
    trying /.odbc.ini ... no
    trying /usr/local/etc ... OK
checking odbc.ini files
    reading /root/.odbc.ini
[server1] not found in /root/.odbc.ini
    reading /usr/local/etc/odbc.ini
[server1] found in /usr/local/etc/odbc.ini
found this section:
    [server1]
      Driver = FreeTDS
      Servername = server1
looking for driver for DSN [server1] in /usr/local/etc/odbc.ini
  found driver line: "      Driver = FreeTDS"
  driver "FreeTDS" found for [server1] in odbc.ini
found driver named "FreeTDS"
"FreeTDS" is not an executable file
looking for entry named [FreeTDS] in /usr/local/etc/odbcinst.ini
  found driver line: "      Driver = /usr/local/lib/libtdsodbc.so"
  found driver /usr/local/lib/libtdsodbc.so for [FreeTDS] in odbcinst.ini
/usr/local/lib/libtdsodbc.so is an executable file
Using ODBC-Combined strategy
DSN [server1] has servername "server1" (from /usr/local/etc/odbc.ini)
cannot read "/root/.freetds.conf"
/usr/local/etc/freetds/freetds.conf is a readable file
looking for [server1] in /usr/local/etc/freetds/freetds.conf
found this section:
    [server1]
        host = 192.168.100.147
        port = 1433
        tds version = 7.2
looking up hostname for ip address 192.168.100.147

Configuration looks OK.  Connection details:

                   DSN:    server1
              odbc.ini:    /usr/local/etc/odbc.ini
                Driver:    /usr/local/lib/libtdsodbc.so
       Server hostname:    sqlsrv01
               Address:    192.168.100.147

Attempting connection as sa ...
+ isql server1 sa foobar -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

Это содержимое моего odbc.ini:

[server1]
  Driver = FreeTDS
  Servername = server1

А это мой odbcinst.ini:

[FreeTDS]
  Driver = /usr/local/lib/libtdsodbc.so
  Client Charset = UTF-8
  UsageCount = 1

Я читал серьезные сообщения об использовании точного именования inf odbc.ini и freetds.conf, но соединение продолжает разорваться.

Кто-нибудь может помочь?


person sascha_luen    schedule 15.04.2015    source источник
comment
Вместо этого попробуйте задать этот вопрос на ServerFault, поскольку это связано с администрированием сервера и не имеет ничего общего с программированием.   -  person Antxon    schedule 15.04.2015
comment
Я сделаю это. Спасибо. :)   -  person sascha_luen    schedule 15.04.2015
comment
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что его следует перенести на ServerFault.   -  person Roland Smith    schedule 15.04.2015


Ответы (1)


Теперь я могу ответить на свой вопрос.

Следуя подсказке из списка рассылки unixODBC, Link я вызвал

odbcinst -i -s -f /usr/local/etc/odbc.ini

и теперь я могу подключиться к серверу через osql.

person sascha_luen    schedule 15.04.2015
comment
@Ryosaku Можете ли вы открыть для него новый вопрос и вставить содержимое вашего odbc.ini? - person sascha_luen; 20.07.2017