Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FreeTDS working, but ODBC cannot connect

Tags:

I am trying to run connect to a MSSQL server from an Ubuntu 12.04 webserver with FreeTDS and unixODBC.

Using tsql i can connect to the server with

~$ tsql -S dbs3 -U <username> -P <password> 

No problem there.

When I try to connect with isql however, I get the following error message:

~$ isql -v database3 <username> <password> [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 

My config files are as follows:

odbc.ini

[database3] Driver=FreeTDS TDS_Version=8.0 Servername=dbs3 Port=1433 Database=benchmark_res 

odbcinst.ini

[FreeTDS] Description=FreeTDS v0.91 Driver=/usr/local/lib/libtdsodbc.so Setup=/usr/local/lib/libtdsS.so Trace=Yes TraceFile=/tmp/freetds.log ForceTrave=Yes UsageCount=1 

freetds.conf

# This file is installed by FreeTDS if no file by the same # name is found in the installation directory. # # For information about the layout of this file and its settings, # see the freetds.conf manpage "man freetds.conf".  # Global settings are overridden by those in a database # server specific section [global]     # TDS protocol version ;   tds version = 4.2      # Whether to write a TDSDUMP file for diagnostic purposes     # (setting this to /tmp is insecure on a multi-user system) ;   dump file = /tmp/freetds.log ;   debug flags = 0xffff      # Command and connection timeouts ;   timeout = 10 ;   connect timeout = 10      # If you get out-of-memory errors, it may mean that your client     # is trying to allocate a huge buffer for a TEXT field.     # Try setting 'text size' to a more reasonable limit     text size = 64512  # A typical Sybase server [egServer50]     host = symachine.domain.com     port = 5000     tds version = 5.0  # A typical Microsoft server [egServer70]     host = ntmachine.domain.com     port = 1433     tds version = 7.0  [dbs3]     host = <server-ip>     port = 1433     tds version = 8.0 

I followed the installation guide 1. here and 2. here

Why isn't isql connecting properly?
My guess is that the mistake is super obvious but I'm just too stupid to see it :D

like image 385
AndMim Avatar asked Aug 14 '13 12:08

AndMim


People also ask

What is FreeTDS driver?

FreeTDS is a set of libraries for Unix and Linux that allows your programs to natively talk to Microsoft SQL Server and Sybase databases. Technically speaking, FreeTDS is an open source implementation of the TDS (Tabular Data Stream) protocol used by these databases for their own clients.

Where is FreeTDS conf?

The default location of freetds. conf is determined by the --sysconfdir option of configure. If you don't specify anything, configure's default sysconfdir is /usr/local/etc . tsql -C reports the sysconfdir to let you confirm it.


2 Answers

The issue was this line in odbc.ini

[database3] must be [dbs3] in your case. 

For those that are also having this problem, Check also the

ServerName  = *Points to the name of the server configured in freetds.conf* 
like image 61
Thales Ceolin Avatar answered Oct 19 '22 05:10

Thales Ceolin


If odbc does not find the datasource it means you are providing the wrong one

You are probably trying to connect to dbs3 which will fail if you don't have it in odbc.ini

You should connect to [database3] for ODBC

isql -v database3 <username> <password> 
like image 43
meda Avatar answered Oct 19 '22 03:10

meda