The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка работы Perl скриптов совместно с MsSQL (perl database win)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl, database, win,  (найти похожие документы)
From: Yukko <yukko@bigmir.net> Newsgroups: email Date: Mon, 27 Jan 2004 14:31:37 +0000 (UTC) Subject: Настройка работы Perl скриптов совместно с MsSQL В статье https://www.opennet.ru/base/dev/mssql_php.txt.html я описывал, как заставить PHP на Linux'е работать с базой MsSQL при помощи библиотеки freetds. Думаю, что некоторых волнует вопрос, как сделать тоже самое, только с Perl. Наш системный администратор решил перенести RADIUS server, который написан на Perl с Windows на Linux и столкнулся с подобной проблемой, которую успешно решил. Все шаги, которые приведены ниже - это его труд. 1. Инсталляция freetds (так же приведена в статье, которую я указал выше) ./configure make make install Необязательный шаг: добавить /usr/local/etc/freetds.conf : [myserver] host=<DBserver_address> port=port number tds version=8.0 2. Установка dbi Perl makefile.pl Make Make test Make install 3. Установка dbd-sybase Makefile.pl (В строке 92 добавить $SYBASE=&#8217;/usr/local&#8217;) Perl makefile.pl Make Make test Make install 4. Тестирование соединения Все это тестируется простым скриптом на Perl, текст которого приведен ниже: #!/usr/bin/perl use DBI; my @data; $dbh=DBI-connect('DBI:Sybase:server=host:port','username','password') or die "Couldn't connect to database: " . DBI->errstr; my $sth=$dbh->prepare('sql query'); $sth->execute(); while (@data=$sth->fetchrow_array()) { my $x=@data[0]; print "result\t $x\n"; }

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1.1, Andy (?), 23:38, 27/01/2004 [ответить]  
  • +/
    IMHO, базу забыли в примере

    $dbh = DBI->connect('DBI:Sybase:server=<host>;port=<port>;database=<base>', 'username', 'password');

     
     
  • 2.2, Yukko (?), 11:48, 30/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Перечитал статью, которая получилась после публикации, а так же получил пару писем с репортами, чувствую надо сдалать пару исправлений.

    1.
    Вместо
    (В строке 92 добавить $SYBASE=’/usr/local’)
    надо
    (В строке 92 добавить $SYBASE=/usr/local)
    2.
    У тех, у кого эта строка не 92, то вставьте эту стороку перед проверкой переменной $SYBASE. Эту проверку найти нетрудно.
    А вообще там есть файл CONFIG, в нем описываются переменные, эту переменную можно попробовать описать ее там.
    3.
    Последняя редакция скрипта, взял так, как оно работает у меня, если скрипт комментария не добавит/уберет чего, то можете пользоваться:
    #!/usr/bin/perl                                                                
    use DBI;                                                                      
    my @data;                                                                      
    $dbh=DBI-connect('DBI:Sybase:server=192.168.0.7:1433','dbreader','dbreadersql')or die Couldn't connect to database: " . DBI->errstr;                        
    my $sth=$dbh->prepare('select usernamefrom users');                          
    $sth->execute();                                                              
    while (@data=$sth->fetchrow_array())                                          
    {                                                                              
    my $x=@data[0];                                                                
    print "result\t $x\n";                                                      
    }

     
  • 2.3, Yukko (?), 11:50, 30/01/2004 [^] [^^] [^^^] [ответить]  
  • +/
    1. Имя базы можно указывать прямо в запросе.
    2. У меня подключается без указания базы потому что он имеет права только на одну базу.
     
     
  • 3.5, 2115 (?), 07:58, 10/03/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Как решить проблемму с кодировкой, русские символы отоброжаются неправильно.
     
     
  • 4.7, NM (?), 14:45, 05/04/2004 [^] [^^] [^^^] [ответить]  
  • +/
    Я задавал такой же здесь вопрос и решил так:
    /usr/local/etc/freetds.conf или ~/.freetds.conf
    должны содержать строки:
    client charset = cp1251
    в секциях [global] или [any_server]

    Пробовал устанавливать кодировку koi8-r, но в версии freetds-0.62.tar.gz
    мне выдает ошибку операции с плавающей точкой. Приходится дополнительно использовать Text::Iconv.

    Пробовал также указывать кодировку клиента в строке соединения:
    my $dbh = DBI->connect("dbi:Sybase:server=server:1433;database=master;charset=cp1251", $user, $password);
    Нужного результата здесь не получается.

     

  • 1.4, Yukko (?), 11:52, 30/01/2004 [ответить]  
  • +/
    Где-то символы глотает (пробел скушало):
    my $sth=$dbh->prepare('select usernamefrom users');        
    в запросе должно быть
    select username from
     
  • 1.6, NM (?), 10:11, 01/04/2004 [ответить]  
  • +/
    У меня все работает, но не могу получить ответ от сервера MSSQL2000 в нормальной кодировке: выдает  знаки ???. Видимо где-то происходит преобразование в Unicode. В документации DBD::Sybase говорится про указатель на кодировку клиента - charset. Пробовал разные кодировки, но ничего не менялось (cp1251, iso_1).

    В документации по TDS также говорится про перекодировку - iconv, но как настроить не понятно.

    Куда копать?

     
  • 1.8, zoomba (?), 15:34, 19/08/2004 [ответить]  
  • +/
    Q: У меня все работает, но не могу получить ответ от сервера MSSQL2000 в нормальной кодировке: выдает  знаки ???.

    ---------------

    A: Как уже было сказано: /usr/local/etc/freetds.conf или ~/.freetds.conf
    должны содержать строки:
    client charset = cp1251
    в секциях [global] или [any_server]

     
  • 1.9, pavel_i (??), 18:50, 31/01/2008 [ответить]  
  • +/
    Да, но в начала статьи речь шла о MSSQL, а содержание про Sybase. Может имелось ввиду DBI:ODBC?
    Как сделать связку FreeTDS и PERL?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2022 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру