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
export ODBCHOME=/xxx/xxx/etc
export ODBCINI=/xxx/xxx
/odbc.ini
export ODBCSYSINI=/xxx/xxx
/etc
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官方网站。
本文来至于网络,且都测试过,感谢大家分享知识!