今天在linux上用perl连接sqlserver,执行存储过程,获取一个结果集

#!/usr/bin/perl
use DBI;
use Data::Dumper;
$dbh=DBI->connect('dbi:ODBC:TEST','perf_gather',‘1234567’);
my $hash_row = $dbh->selectrow_hashref("exec DBA.Insert_Performance_counter");
print Data::Dumper->Dumper($hash_row);
$dbh->disconnect;

其中在Linux上配置连接sqlserver是比较麻烦的。我参考了如下文档:
其中下边红色部分还是增加一下的好,否则会抱怨没有Qt之类

Linux使用perl通过unixODBC连接SQLServer2000


一、关于测试环境及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  --enable-gui=no
# 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 DBCHOME=/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

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

转载于:http://blog.itpub.net/82392/viewspace-238018/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值