Linux环境Perl链接MS Sql Server数据库

1、下载相关软件 unixODBC、freetds和DBD-ODBC

  ①、Linux系统的ODBC          unixODBC-2.3.4.tar.gz ( http://www.unixodbc.org)

  ②、连接SQLServer或Sybase的驱动     freetds-patched.tar.gz ( http://www.freetds.org)

  ③、perl的ODBC模块           DBD-ODBC-1.56.tar.gz ( http://cpan.perl.org)

2、安装(非root用户和root)

  ①、安装unixODBC

    # tar vxzf unixODBC-2.3.4.tar.gz
    # cd unixODBC-2.3.4
    # ./configure --prefix=/xxx/xxx
    # make
    # make install

  ②、安装freetds

    # tar vxzf freetds-patched.tar.gz
    # cd freetds-patched
    # ./configure --prefix=/xxx/xxx--with-unixodbc=/xxx/xxx
    # make
    # make install

  ③、安装DBD-ODBC

    在安装之前要先设置一下环境变量

    export ODBCHOME=/xxx/xxx
    export LD_LIBRARY_PATH=/xxx/xxx/lib

    之后开始编译安装

    # tar vxzf DBD-ODBC-1.56.tar.gz
    # cd DBD-ODBC-1.56
    # perl Makefile.PL INSTALL_BASE=/uuu/uuu
    # make
    # make install

    方便使用自己安装的perl模块,可以统一将其安装在某个目录,添加如下环境变量
    export PERL5LIB=/uuu/uuu:$PERL5LIB     ←  这里放置自己设置的perl模块路径
3、配置

  ①、配置freetds

    # cd /xxx/xxx/freetds     进入自定义安装的目录
    # vi freetds.conf

    添加如下内容:

    [MyServer2k]       客户端使用的服务器名称
    host=192.168.0.32    SQLServer服务器的IP地址
    port=1433        端口
    tds version=8.0

    测试连接;

    # bin/tsql -S MyServer2k -H 192.168.0.32 -p 1433 -U sa -P password
    1> use xxx
    2> go
    1> select count(*) from xxx
    2>
    4
    1> quit

    说明:-S MyServer2k是在freetds.conf中定义好的,-H 192.168.0.32服务器IP地址,和freetds.conf中的一致,-S这个参数可以不用

       -p 1433用来指定端口是1433 ,-U sa用来指定连接数据库的用户名,-P password用来指定连接数据库的密码。
 
②、配置unixODBC

    # cd /xxx/xxx/unixODBC

    向ODBC添加SQLServer驱动

    # vi odbcinst.ini

    写入如下内容:             说明

    [TDS]                  驱动名称,自己随便起
    Description = MS-SQLServer       
驱动的描述
    Driver = /xxx/xxx/lib/libtdsodbc.so  
    Setup = /xxx/xxx/lib/libtds.so     
    FileUsage = 1

    保存退出
    添加DSN

    # vi odbc.ini

    写入如下内容       说明

    [123]           DSN名称,随便起
    Driver = TDS        ODBC驱动
    Server = 192.168.0.32   服务器IP
    Database = xxx       数据库名字
    Port = 1433        端口


    保存并退出,测试ODBC的连接,最好是将安装的bin目录添加到环境变量,不然每次都需输入全路径

    # bin/isql -v 123 sa password
    SQL> select count(*) from  xxx
      +----------+
      | |
      +----------+
      | 4 |
      +----------+
    SQL> quit

    最后(非root用户)在环境变量中添加ODBC环境变量
    export ODBCHOME=/xxx/xxx/etc 
    export ODBCINI=/xxx/xxx/odbc.ini
    export ODBCSYSINI=/xxx/xxx/etc
   root用户可以将安装的bin目录copy到共享目录

4、perl脚本测试能否成功;

    # vi test.pl

    内容如下

    #!/usr/bin/perl
    use DBI;
    $dbh=DBI->connect('dbi:ODBC:123','sa','password');
    my $sth=$dbh->prepare("select * from xxx")
    $sth->execute();
    while (@data=$sth->fetchrow_array()){
      print "$data[0] $data[1] $data[2]\n";
    }

    保存退出

    # perl test.pl

    如果可以看到数据库中的记录,就说明可以正常使用ODBC perl了。
    既然已经可以实现perl通过ODBC来连接SQLServer了,那么同样可以使用PHP+ODBC+SQLServer,具体方法请查询PHP官方网站。

本文来至于网络,且都测试过,感谢大家分享知识!

posted @ 2017-03-22 15:29  鳄鱼鱼鱼  阅读(1113)  评论(0编辑  收藏  举报