Bonjour,
Aujourd’hui nous allons voir un rapide tutoriel permettant de mettre en place les pré-requis permettant d’utiliser un script Perl pour se connecter à une base de données MSSQL 2008 ou 2012 via ODBC avec FreeTDS. Attention cela ne fonctionnera que pour des comptes « locaux » sur SQL server et non Windows.
En pré-requis il faudra bien évidemment connaître l’IP, le Port du serveur MSSQL ainsi que de disposer d’un compte utilisateur pouvait se connecter sur le server.
Dans un premier temps, il va falloir installer les pré-requis, pour cela, exécutez les commandes suivantes :
#cd /tmp #wget http://pkgs.repoforge.org/perl-DBD-ODBC/perl-DBD-ODBC-1.23-1.el6.rf.x86_64.rpm #rpm -ivh ftp://fr2.rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm #yum install freetds unixODBC unixODBC-devel #yum install perl perl-DBI #yum install perl-DBD-ODBC-1.23-1.el6.rf.x86_64.rpm
Une fois ces pré-requis installés, il faut créer un template pour installer le driver FreeTDS. Créez un fichier tds.driver.template et copiez cela :
[FreeTDS] Driver = /usr/lib64/libtdsodbc.so.0
Vérifier que le fichier « libtdsodbc.so.0″ se trouve bien à cet endroit si besoins :
updatedb locate libtdso
Installez ensuite le nouveau driver en utilisant le fichier récemment créé :
#odbcinst -i -d -f tds.driver.template
Vous pouvez vérifiez que le nouveau driver est bien installé grâce à cette commande :
#odbcinst -q -d [PostgreSQL] [MySQL] [FreeTDS] <<<<<<<<
[MSSQL] Driver = FreeTDS Address = $ADRESSE IP DU SERVER$ Port = 1433 TDS Version = 8.0 Database = $NOM DE LA BASE DE DONNEE$
isql -v -s MSSQL SQLUSERNAME SQLUSERPASSWORD
#!/usr/bin/perl
use
DBI;
use
strict;
use
DBI;
my
@dsns
= DBI->data_sources(
'ODBC'
);
foreach
my
$d
(
@dsns
)
{
"$d n"
;
}
my
$dbh
= DBI->
connect
(
'dbi:ODBC:DSN=MSSQL;UID=SQLUSERNAME;PWD=SQLUSERPASSWORD'
) or
die
"CONNECT ERROR! :: $DBI::err $DBI::errstr $DBI::state $!n"
;
if
(
$dbh
)
{
"There is a connectionn"
;
my
$sql
=
q/SELECT * FROM dbo.users/
;
my
$sth
=
$dbh
->prepare(
$sql
);
$sth
->execute();
my
@row
;
while
(
@row
=
$sth
->fetchrow_array) {
# retrieve one row at a time
join
(
", "
,
@row
),
"n"
;
}
$dbh
->disconnect;
}
Tags: connect to microsoft sql server using perl, freetds, microsoft, mssql, odbc, perl, sql server 2008