ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 在Linux下使用perl通过unixODBC连接SQLServer2000(转)

在Linux下使用perl通过unixODBC连接SQLServer2000(转)

原创 Linux操作系统 作者:ilg 时间:2019-05-24 14:45:07 0 删除 编辑
在Linux下使用perl通过unixODBC连接SQLServer2000(转)

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

  一、关于测试环境及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] ";

}

  保存退出

  # perl test.pl

  如果可以看到数据库中的记录,就说明可以正常使用ODBC perl了。

  既然已经可以实现perl通过ODBC来连接SQLServer了,那么同样可以使用PHP+ODBC+SQLServer,具体方法请查询PHP官方网站。

  四、关于本文

  写完,收工,今天晚上可以不用熬夜了,开心

  PS:M$真是害死我了。

  五、相关文档

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14102/viewspace-116485/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2002-06-18

  • 博文量
    1715
  • 访问量
    1292359