UnixODBC与FreeTDS安装配置教程

4星 · 超过85%的资源 需积分: 48 19 下载量 77 浏览量 更新于2024-09-18 收藏 2KB TXT 举报
本文档是关于在Unix系统上安装unixODBC、freetds和DBD-ODBC的详细步骤,以实现与Microsoft SQL Server的连接。 UnixODBC是一个开放源代码的ODBC(Open Database Connectivity)驱动程序管理器,它允许在Unix和Linux系统上与各种数据库进行通信。freetds是一个开源的库,提供了对Microsoft SQL Server和Sybase的连接支持。DBD-ODBC是Perl模块,通过ODBC接口来访问数据库。 下面是安装过程的详细步骤: 1. 首先,确认Perl和DBI模块已经安装。可以运行`perl -MDBI -e 'DBI->installed_versions'`来检查DBI是否已安装。 2. 安装unixODBC: - 解压下载的unixODBC源码包,例如:`tar xvf unixODBC-2.2.12.tar.gz` - 进入解压后的目录,如:`cd unixODBC-2.2.12` - 运行配置脚本,并指定安装路径:`./configure --prefix=/usr/local/unixODBC` - 编译源码:`make` - 安装编译后的二进制文件:`make install` 3. 安装freetds: - 解压freetds源码包,例如:`tar xvf freetds-0.64RC2.tar.gz` - 进入源码目录:`cd freetds-0.64RC2` - 配置freetds,指定unixODBC的路径、TDS版本以及禁用libiconv:`./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0 --disable-libiconv` - 编译源码:`make` - 安装编译后的二进制文件:`make install` 4. 安装DBD-ODBC: - 设置环境变量ODBCHOME指向unixODBC的安装位置:`export ODBCHOME=/usr/local/unixODBC` - 解压DBD-ODBC源码:`tar xzf DBD-ODBC-1.13.tar.gz` - 进入源码目录:`cd DBD-ODBC-1.13` - 生成Makefile:`perl Makefile.PL` - 编译和安装:`make` 和 `make install` 5. 配置freetds: - 打开freetds的配置文件:`vi /usr/local/freetds/etc/freetds.conf` - 添加一个新的服务器配置,例如: ``` [MyServer2k] host = 192.168.0.32 port = 1433 tds version = 8.0 ``` - 使用tsql工具测试连接:`/usr/local/freetds/bin/tsql -S MyServer2k -H 192.168.0.32 -p 1433 -U Usa -P password` 6. 配置UnixODBC的odbcinst.ini: - 打开UnixODBC的odbcinst.ini文件:`vi /usr/local/unixODBC/odbcinst.ini` - 添加FreeTDS驱动的配置,例如: ``` [FreeTDS] Description = MS-SQL Server Driver = /usr/local/freetds/lib/libtdsodbc.so Setup = ``` 现在,Unix系统已经配置好与SQL Server的连接。可以通过创建ODBC数据源并使用Perl的DBI模块来连接和查询数据库。例如,创建一个名为"MyDSN"的数据源,并执行SQL查询: ```bash # 创建数据源 isql -v MyDSN Usa password # 在isql会话中执行查询 SQL> SELECT COUNT(*) FROM tablename; ``` 或者,在Perl中使用DBI模块: ```perl use DBI; my $dsn = "DBI:ODBC:FreeTDS"; my $user = "Usa"; my $password = "password"; my $dbh = DBI->connect($dsn, $user, $password) or die $DBI::errstr; my $sth = $dbh->prepare("SELECT COUNT(*) FROM tablename"); $sth->execute(); while (my @row = $sth->fetchrow_array()) { print "Count: $row[0]\n"; } $sth->finish(); $dbh->disconnect(); ``` 完成以上步骤后,你就可以在Unix环境中通过ODBC接口与远程的Microsoft SQL Server进行交互了。