Search code examples
sql-serverubuntuodbcfreetds

FreeTDS can't read Servername from odbc.ini


I am trying to setup FreeTDS to connect into a mssql server in Ubuntu 14.04 and FreeTDS 4.2

However osql can't read Servername setting due unknow reasons. If I use isql, it works. However my programs use odbc.ini settings.

What I am doing wrong?

My odbc.ini;

[ODBC Data Sources]
Test = My Test Server

[mssql]
Description = My Test Server
Driver      = FreeTDS
Trace       = No
TDS_Version = 4.2
Servername  = mssql

Command

~$ osql -S mssql -U user -P password 
checking shared odbc libraries linked to isql for default directories...
strings: '': No hay tal fichero
    trying /tmp/sql ... no
    trying /tmp/sql ... no
    trying /etc ... OK
checking odbc.ini files
    reading /home/business/.odbc.ini
[mssql] not found in /home/business/.odbc.ini
    reading /etc/odbc.ini
[mssql] found in /etc/odbc.ini
found this section:
    [mssql]
    Description = My Test Server
    Driver      = FreeTDS
    Trace       = No
    TDS_Version = 4.2
    Servername  = mssql

looking for driver for DSN [mssql] in /etc/odbc.ini
  found driver line: "  Driver      = FreeTDS"
  driver "FreeTDS" found for [mssql] 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 [mssql] has servername "" (from /etc/odbc.ini)

Solution

  • A few things you'll want to fix up here. First, in odbc.ini, is it "Server" and not "Servername". Here's an example.

    odbc.ini:

    [myserver]
    Driver = FreeTDS
    Server = myserver.mydomain.com
    Port = 1433
    TDS_Version = 7.2
    

    freetds.conf:

    [myserver]
    host = myserver.mydomain.com
    port = 1433
    tds version = 7.2
    

    Also, you're going to want to use a higher TDS Version. TDS 4.2 was for Microsoft SQL Server 6.0! Despite the documentation, I have found it does not work with all products. To select an appropriate TDS version, see here:

    http://www.freetds.org/userguide/choosingtdsprotocol.htm

    You most likely want version 7.2 or 7.3. Good luck!