sql server - tsql connects to ODBC but Perl DBI gets an error -


  • client ubuntu 14.04.1 lts talking ms sql server 2005. ubuntu has no registered domain. it's inside local network ms sql server.
  • perl 5.18.2 using dbi 1.63 , dbd::odbc 1.52.
  • installed freetds 0.92 (with tds v4.2) , unixodbc 2.2.14.
  • isql dsn username passwd @ command line doesn't work. perhaps should start that. still same error unable connect data source (sql-08001).

my related config files:

2015-07-09 11:55:14 note: tds version tsql -c must go freetds.conf , odbc.ini files  ========================================= /etc/odbcinst.ini: [freetds] description = freetds 0.91 microsoft sql server 2005 #driver = /usr/lib/odbc/libtdsodbc.so driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so setup = /usr/lib/x86_64-linux-gnu/odbc/libtdss.so usagecount = 1 #threading = 2 fileusage = 1 dontdlclose = 1  ========================================= /etc/odbc.ini: [odbc data sources] responsebdo = response database desc in /etc/odbc/ini  [freetds] description = freetds 0.91 driver driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so  [responsebdo] driver = freetds description = response mssql 2005 odbc driver server = sqlsvr.mydomain.com port = 1433 user = 'domain\domainuser' password = mypasswd database = r4w_004 # tds_version should same reported 'tsql -c'. tds_version = 4.2  [default] driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so description = default freetds odbc driver server = 10.20.30.40 user = "domain\domainuser" database = r4w_4  ========================================= relevant part of /etc/freetds/freetds.conf: #   $id: freetds.conf,v 1.12 2007/12/25 06:02:36 jklowden exp $ # # file installed freetds if no file same  # name found in installation directory.   # # information layout of file , settings,  # see freetds.conf manpage "man freetds.conf".   #  [responsetds]     #host = 10.20.30.40     host = sqlsvr.mydomain.com     port = 1433     tds version = 4.2     connect timeout = 20     timeout = 20     dump file = /tmp/freetds-resp.log     instance = mssqlserver       use ntlmv2 = yes   ========================================= tsql -c: compile-time settings (established "configure" script)                             version: freetds v0.91              freetds.conf directory: /etc/freetds      ms db-lib source compatibility: no         sybase binary compatibility: yes                       thread safety: yes                       iconv library: yes                         tds version: 4.2                               iodbc: no                            unixodbc: yes               sspi "trusted" logins: no                            kerberos: yes  ========================================= odbcinst --version: unixodbc 2.2.14 


perl connection info:

$respdsn="dbi:odbc:driver={sql native client};server=10.20.30.40;". "uid=$respdbuser;pwd=$respdbpw;database=r4w_004"; $respdbh=dbi->connect($respdsn); 

i can connect database using tsql @ command line. using perl error:

dbi connect('driver={sql native client};server=10.19.1.3;uid=gilson\mwreports;pwd=mr4gilson;database=r4w_004','',...) failed: [unixodbc][driver manager]data source name not found, , no default  driver specified (sql-im002) @ /home/chuck/perl/gilson/jimv/fedex/fedex.pl line 1557.  @ /usr/lib/perl5/dbi.pm line 691.         dbi::__anon__[/usr/lib/perl5/dbi.pm:744](undef, undef) called @ /usr/lib/perl5/dbi.pm line 747 


questions:

  • is "{sql native client}" in perl connection string correct? refer entry in odbc.ini or freetds.conf file?
  • what missing here?

thank you.

if you're using freetds, driver freetds not "sql native client".

try line database handle:

my $dbh = dbi->connect("dbi:odbc:driver=freetds;server=10.20.30.40;database=r4w_004", $respdbuser, $respdbpw); 

Comments