There are a few ways to use Perl to connect to a SQL Server using FreeTDS.
The recommended choice is DBD::Sybase from Michael Peppler. Despite the name it works for any Sybase or Microsoft SQL Server. DBD::Sybase uses the CT-Library API and works well.
You may also use DBD::ODBC with the FreeTDS ODBC driver. You may find this attractive if you're familiar with DBD::ODBC.
Finally, you can use Sybperl. Scripts written against Sybperl will not run against other databases the way DBI scripts will. However, it will be familiar ground for those who know DB-Library.
Example?7.2.?Building DBD::Sybase
$cd DBD-Sybase-0.91$export SYBASE=/usr/local/freetds$perl Makefile.PL$make$su rootPassword:$make install
There will be some output about missing libraries after perl Makefile.PL. These are normal.
The following example will attach to Sybase's public JDBC server and run a simple query (it can be found in samples/test.pl):
Example?7.3.?Connect to a server with DBD::Sybase
#!/usr/local/bin/perl
#
use DBI;
my $dbh = DBI->connect("dbi:Sybase:server=JDBC", 'guest', 'sybase', {PrintError => 0});
die "Unable for connect to server $DBI::errstr"
unless $dbh;
my $rc;
my $sth;
$sth = $dbh->prepare("select \@\@servername");
if($sth->execute) {
while(@dat = $sth->fetchrow) {
print "@dat\n";
}
}
Example?7.4.?Building DBD::ODBC
$cd DBD-ODBC-0.28$export SYBASE=/usr/local/freetds$export ODBCHOME=/usr/local$export DBI_DSN=dbi:ODBC:JDBC$export DBI_USER=guest$export DBI_PASS=sybase$perl Makefile.PL$make$su rootPassword:$make install
![]() | Note |
|---|---|
We used the public JDBC server logins for our configuration here. You'll want to replace these with ones suitable to your environment. |
Example?7.5.?Connect to a server with DBD::ODBC
#!/usr/local/bin/perl
#
use DBI;
my $dbh = DBI->connect("dbi:ODBC:JDBC", 'guest', 'sybase', {PrintError => 0});
die "Unable for connect to server $DBI::errstr"
unless $dbh;
my $rc;
my $sth;
$sth = $dbh->prepare("select \@\@servername");
if($sth->execute) {
while(@dat = $sth->fetchrow) {
print "@dat\n";
}
}
You'll note this is the same program as for DBD::Sybase with the exception of the connect statement. Welcome to the magic of DBI!