Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses

Re: fail: Linux Perl-DBI to SQL Server

by pvaldes (Chaplain)
on May 15, 2013 at 22:26 UTC ( #1033746=note: print w/replies, xml ) Need Help??

in reply to fail: Linux Perl-DBI to SQL Server

It seems that you have two problems here, the program can not find neither the database nor the driver...

1 - I could be wrong (I'm not familiar with the MicrosoftSQL DB) but I think that DBI use dbname=$mydatabase instead to database=$mydatabase, please check this.

2 - I find also strange the structure of the driver part. What is the purpose of the "{}"?. (UPDATED, you want to say: q{}?)

Check the name of your driver with something like:

perl -MDBI -e 'my @drivers = DBI->available_drivers; print join(", ", @drivers), "\n";'

(UPDATED: mmmh, the name is "Microsoft ODBC Driver 11 for SQL Server" or "ODBC Driver 11 for SQL Server"?)

Replies are listed 'Best First'.
Re^2: fail: Linux Perl-DBI to SQL Server
by madmole (Novice) on May 16, 2013 at 01:43 UTC


    I have figured out what is going on and succeeded in connecting. The root of the problem is understanding the concept of a DSN. The basic syntax is:


    where dsn_name is a string that is used to index into a section header of one of the .ini files (e.g. odbcinst.ini).

    The problem is that there is an alternate syntax known as DSN-less connection strings (curly brackets) which essentially contains connection information inline. For some reason I never got this to work correctly, I believe because the DSN-less syntax never connected to the location of the driver .so file. When I refashioned my example to use DSN syntax the example succeeded. My updated code fragment looks like this:

    % cat #!/usr/bin/perl use DBI; my $dsn="dbi:ODBC:DSN=tul1system"; my $dbh = DBI->connect($dsn, "user334", "2BEvPog"); if (! defined($dbh) ) { print "***Error connecting to DSN\n"; print "***Error was:\n"; print "***$DBI::errstr\n"; # $DBI::errstr is the error }

    Note that the other information like database name and IP address now come from the .ini file.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1033746]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2018-06-19 14:50 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (114 votes). Check out past polls.