zoukankan      html  css  js  c++  java
  • 数据库服务器 之 在Linux下使用perl通过unixODBC连接SQLServer2000

    作者:tonyvicky
    来自:LinuxSir.Org
    摘要:MS从来没有提供过SQLServer for Linux,所以大家也不要去尝试在Linux系统安装SQLServer,但是可以通过ODBC连接Windows系统的SQLServer数据库;

    目录

    一、关于测试环境及Linux连接SQL Server 的说明;
    二、下载相关软件 unixODBC、freetds和DBD-ODBC
    三、安装和配置;

    四、关于本文
    五、相关文档

    ++++++++++++++++++++++++++++++++++++++++++++
    正文
    ++++++++++++++++++++++++++++++++++++++++++++


    一、关于测试环境及Linux连接SQL Server 的说明;

    测试环境:
    gcc 3.3.3 , kernel 2.6.5-1 , glibc 2.3.3-27 , perl 5.8.3
    关于SQL Server说明:

    MS从来没有提供过SQLServer for Linux,所以大家也不要去尝试在Linux系统安装SQLServer,但是可以通过ODBC连接Windows系统的SQLServer数据库;

    Windows Server 2003用户注意:

    在Windows Server 2003系统上安装的SQLServer是不会打开1433端口的,所以请Windows2003用户在安装完SQLServer之后一定装上SQLServer SP3布丁


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

    首先需要下载3个文件:

    Linux系统的ODBC

    unixODBC-2.2.8.tar.gz ( http://www.unixodbc.org)

    连接SQLServer或Sybase的驱动

    freetds-0.62.4.tar.gz ( http://www.freetds.org)

    perl的ODBC模块

    DBD-ODBC-1.12.tar.gz ( http://cpan.perl.org)

    把下载到的三个文件放到同一个目录


    三、安装和配置;


    1、安装unixODBC

    # tar vxzf unixODBC-2.2.8.tar.gz
    # cd unixODBC-2.2.8
    # ./configure --prefix=/usr/local/unixODBC
    # make
    # make install


    2、安装freetds

    # tar vxzf freetds-0.62.4.tar.gz
    # cd freetds-0.62.4
    # ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0
    # make
    # make install


    3、安装DBD-ODBC

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

    # export ODBCHOME=/usr/local/unixODBC

    之后开始编译安装
    # tar vxzf DBD-ODBC-1.12.tar.gz
    # cd DBD-ODBC-1.12
    # perl Makefile.PL
    # make
    # make install

    所有的软件到现在都安装完成了,接下来就是配置了

    4、配置freetds

    # cd /usr/local/freetds
    # vi etc/freetds.conf

    修改以下的一段,并把;去掉
    改好之后的内容:
    [MyServer2k]
    host=192.168.0.32
    port=1433
    tds version=8.0

    其中的[MyServer2k]代表在客户端使用的服务器名称,host代表SQLServer服务器的IP地址,port代表端口,测试连接;

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

    一切都很顺利
    现在来说明以下这些参数的作用,-S MyServer2k是在freetds.conf中定义好的,-H 192.168.0.32服务器IP地址,和freetds.conf中的一致,如果使用了-S参数,这个参数可以不用,-p 1433用来指定端口是1433 ,-U sa用来指定连接数据库的用户名,-P password用来指定连接数据库的密码。


    5、配置unixODBC

    # cd /usr/local/unixODBC

    向ODBC添加SQLServer驱动
    # vi etc/odbcinst.ini

    写入如下内容:
    [TDS] ;驱动名称
    Description = MS-SQLServer ;描述
    Driver = /usr/local/freetds/lib/libtdsodbc.so ;驱动程序
    Setup = /usr/local/freetds/lib/libtds.so ;不要问我,我也不知道这是什么
    FileUsage = 1

    保存退出
    添加DSN
    # vi etc/odbc.ini

    写入如下内容
    [123] ;DSN名称
    Driver = TDS ;ODBC驱动
    Server = 192.168.0.32 ;服务器IP
    Database = gameDB ;要使用的数据库
    Port = 1433 ;端口
    Socket =
    Option =
    Stmt =

    保存并退出,测试ODBC的连接
    # bin/isql -v 123 sa password
    SQL> select count(*) from t_ip
    +----------+
    | |
    +----------+
    | 4 |
    +----------+
    SQL> quit

    OK,测试通过,开始测试perl能否正确使用ODBC
    在使用perl连接ODBC之前要做些准备工作
    把ODBC的共享库都复制到/usr/lib目录

    # cp /usr/local/unixODBC/lib/libodbc.* /usr/lib


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

    # vi test.pl

    内容如下
    #!/usr/bin/perl

    use DBI;
    $dbh=DBI->connect('dbi:ODBC:123','sa','password');
    my $sth=$dbh->prepare("select * from t_ip";
    $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官方网站。


    四、关于本文

    写完,收工,今天晚上可以不用熬夜了,开心
    PS:M$真是害死我了。


    五、相关文档

    《sqlrelay 的安装配置和应用》

  • 相关阅读:
    使用nginx部署Yii 2.0yii-advanced-app-2.0.6
    yii-basic-app-2.0.5/basic/config/web.php
    PS显示图像大小快捷键
    说说c, c++ 和 go
    十分钟搭建自己的私有NuGet服务器-BaGet(转)
    Redis面试总结&史上最全Redis面试题及答案(转)
    Kubernetes之helm部署使用(转)
    Kubernetes RBAC 详解(转)
    Kubernetes 集群安全机制详解(转)
    Repository 返回 IQueryable?还是 IEnumerable?(转)
  • 原文地址:https://www.cnblogs.com/licheng/p/1050122.html
Copyright © 2011-2022 走看看