您的位置:首页 > 运维架构 > Linux

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

2011-02-28 17:23 387 查看

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

作者:tonyvicky

来自:LinuxSir.Org

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

目录

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


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


三、安装和配置;

1、安装unixODBC
2、安装freetds
3、安装DBD-ODBC
4、配置freetds
5、配置unixODBC
6、perl脚本测试能否成功;
四、关于本文

五、相关文档

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



一、关于测试环境及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官方网
站。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: