设为首页 收藏本站
查看: 663|回复: 0

[经验分享] 在Linux下使用perl通过unixODBC连接SQLServer2000

[复制链接]

尚未签到

发表于 2015-12-26 15:25:38 | 显示全部楼层 |阅读模式
  来自:http://www.linuxsir.org/main/?q=node/145
摘要: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官方网站。
  
  
四、关于本文

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-156662-1-1.html 上篇帖子: perl中my与local的区别 下篇帖子: Perl中的类与继承
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表