culix
culix

Reputation: 10616

How do I connect to a MSSQL database using Perl's DBI module in Windows?

How do I connect to a MSSQL database using Perl's DBI module in Windows?

Upvotes: 11

Views: 32316

Answers (4)

Neil McGuigan
Neil McGuigan

Reputation: 48236

Using OLEDB with Integrated Security (Windows Authentication):

DBI:ADO:Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=localhost;Initial Catalog=$dbName;

Upvotes: 0

culix
culix

Reputation: 10616

Couldn't find this anywhere reliable. Use Perl code similar to

use DBI;
my $dbs = "dbi:ODBC:DRIVER={SQL Server};SERVER={ServerName}";
my ($username, $password) = ('username', 'password');

my $dbh = DBI->connect($dbs, $username, $password);

if (defined($dbh))
{
    #write code here
    $dbh->disconnect;
}
else
{
    print "Error connecting to database: Error $DBI::err - $DBI::errstr\n";
}

Upvotes: 6

Tanktalus
Tanktalus

Reputation: 22254

Checking Perlmonks, I see the suggestion to actually use the Sybase DBI driver for connecting to MS SQL. Which makes sense, given that MS SQL has its origins in the Sybase code. ODBC works, too, of course.

Upvotes: 4

bart
bart

Reputation: 7767

Use DBD::ODBC. If you just create a data source with the Control Panel -> System Management -> ODBC Data Sources -> System Data Source or User Data Source (those are the names as I remember them, but my XP isn't in English, so I can't check), then all you have to do is use the name of that data source in the DBI connect string.

my $dbh = DBI->connect("dbi:ODBC:$dsn", $user, $pwd, \%attr);

The difference between User and System data source is that the latter is usable by any user.

See also: HOW TO: Create a System Data Source Name in Windows XP

Upvotes: 13

Related Questions