Skip to end of metadata
Go to start of metadata

CentOS

sudo yum install freetds unixODBC unixODBC-devel

wget http://pkgs.repoforge.org/perl-DBD-ODBC/perl-DBD-ODBC-1.23-1.el6.rf.x86_64.rpm

sudo rpm -ivh perl-DBD-ODBC-1.23-1.el6.rf.x86_64.rpm

проверяем установлен ли модуль, если нет сообщения об ошибке - значит модуль установлен

perl -e 'use DBD::ODBC;'

проверяем версию модуля

perl -MDBD::ODBC -e 'print $DBD::ODBC::VERSION;'

драйвер к базе MSSQL FreeTDS

wget ftp://ftp.astron.com/pub/freetds/stable/freetds-0.91.103.tar.gz
tar zxvf freetds-0.91.103.tar.gz
cd freetds-0.91.103
./configure --prefix=/usr/local/freetds --enable-msdblib
make
make install
cp include/tds.h /usr/local/freetds/include
cp src/tds/.libs/libtds.a /usr/local/freetds/lib
echo "/usr/local/freetds/lib" >> /etc/ld.so.conf
echo "export FREETDSCONF=/usr/local/freetds/etc/freetds.conf" >> /etc/profile
ln -s /usr/local/freetds/lib /usr/local/freetds/lib64

поиск установленной библиотеки

sudo updatedb
locate libtdso
/usr/local/freetds/lib/libtdsodbc.so.0
/usr/local/freetds/lib/libtdsodbc.so.0.0.0
echo "[FreeTDS]
> Description     = FreeTDS
> Driver = /usr/local/freetds/lib/libtdsodbc.so.0" >> tds.driver.template

подключение ODBC

sudo odbcinst -i -d -f tds.driver.template

при успешном подключении

odbcinst: Driver installed. Usage count increased to 1.
    Target directory is /etc

проверяем успешность подключения

 odbcinst -q -d

вывод команды

[PostgreSQL]
 [MySQL]
 [FreeTDS]

настройка ODBC MS SQL

sudo su -
  echo "[MSSQL]
  Driver = FreeTDS
  Address = IPADDRESSOFMSSQL
  Port = 1433
  TDS_Version = 8.0
  Database = MYDATABASENAME" >> /etc/odbc.ini

Тестируем ODBCconnect к MSSQL базе

isql -v -s MSSQL SQLUSERNAME SQLUSERPASSWORD

вывод

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

пример перл программы

#!/usr/bin/perl
use DBI;
use strict;
use DBI;
my @dsns = DBI->data_sources('ODBC');
foreach my $d (@dsns)
{
  print "$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)
{
  print "There is a connection\n";
  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
    print join(", ", @row), "\n";
  }
  $dbh->disconnect;
}


  • No labels