On Thursday, June 28, 2012 11:50:50 AM UTC-6, "Martin J. Evans" wrote:
> On 28/06/2012 17:07, Shrenuj Bansal wrote:
> > I am using a perl script to try to connect to SQL Server on Windows. I 
> > believe I have DBI v1.607 and DBD::ODBC v1.25. I am able to connect to the 
> > server when I set up a data source using the ODBC Data Source Administrator 
> > on Windows. However, when I try to set up the data source myself in the 
> > perl script with the same credentials I get an error. I was hoping someone 
> > could help me out with this.
> >
> > Here's my code:
> >
> >
> > use DBI;
> >
> > # DBD::ODBC
> >
> > my $dsn = 'DBI:ODBC:Driver={SQL Server}';
> > my $host =
> > my $database =
> > my $user =
> > my $auth =
> >
> > # Connect via DBD:ODBC by specifying the DSN dynamically
> > my $dbh = DBI->connect("$dsn;Server=$host;Database=$database",
> >                                             $user,
> >                                             $auth,
> >                                             { RaiseError => 1, AutoCommit 
> > => 1}
> >                                             ) || die "Database connection 
> > not made: $DBI:errstr";
> >                                             
> > # Prepare a SQL statement
> >
> > my $sql = "SELECT BundleVersionLocation FROM valdb.dbo.VDB_BundleVersions 
> > WHERE BundleVersionID = 20";
> > my $sth = $dbh->prepare( $sql );
> >
> > # Execute the statement
> > $sth->execute();
> >
> > my($BundleVersionID);
> >
> > # Bind the results to the local variables
> > $sth->bind_columns( undef, \$BundleVersionID );
> >
> > # Retrieve values from the result set
> > while( $sth->fetch() ) {
> >     print "$BundleVersionID\n";
> > }
> >
> > # Close the connection
> > $sth->finish();
> > $dbh->disconnect();
> >
> > Here is the error I receive when I try to run the above script:
> >
> > DBI connect('Driver={SQL 
> > Server};Server=ecmdrvdev-dbsql;Database=valdb','shrenuj
> > b',...) failed: [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed 
> > for
> > user 'shrenujb'. (SQL-28000) at test.pl line 13
> >
> You did not specify a UID/PWD in the above Perl and yet the error 
> indicates you did specify a username!
> If you want to use a trusted connection you'll need to add that 
> attribute to the connection string.
> 
> You can use dbi:ODBC:DSN=mydsn to connect in Perl where mydsn is the 
> data source you created in the ODBC administrator and then once you 
> connect print out odbc_out_connect_string 
> (http://search.cpan.org/~mjevans/DBD-ODBC-1.37/ODBC.pm#odbc_out_connect_string)
>  
> and that will be the connection string you need to use to reconnect 
> without a DSN once you replace DSN with DRIVER=xxx (you get this string 
> from the ODBC administrator driver tab and enclose it in {} if it 
> contains spaces).
> 
> e.g. (on windows so quotes different),
> 
> C:\Users\martin>perl -le "use DBI;my $h = 
> DBI->connect('dbi:ODBC:DSN=asus2','xx'
> ,'yy'); print $h->{odbc_out_connect_string};"
> DSN=asus2;UID=xx;PWD=yy;WSID=ASUS2;DATABASE=master;Network=DBMSSOCN;Address=ASUS2\SQLEXPRESS,1433
> 
> Replace DSN=asus2 with DRIVER={SQL Server} (or SQLNative Client or SQL 
> Server Native Client 10.0 depending on what the Drivers tab says).
> 
> NOTE: If you put the db username/password in the connection string via 
> UID=xx;PWD=yy the username/password passed to DBI's connect method are 
> ignored - I think (and I say I think because you are using a pretty old 
> DBD::ODBC).
> 
> Martin

Sorry I forgot to specify that the host, database, user, and auth fields are 
assigned values. I just removed those since I did not want to display those in 
a public forum.

Reply via email to