当前位置: 首页 > 工具软件 > FreeTDS > 使用案例 >

linux Freetds使用

阎阳
2023-12-01

官方网站:http://www.freetds.org
版本:0.64
下载地址:http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
这个软件能够用Linux和Unix连接MS SQLServer和Sybase数据库。

二、安装与配置

2.1编译安装freetds:

$ tar zxvf freetds-stable.tgz(解压)
$ ./configure --prefix=/usr/local/freetds --with-tdsver=8.0 --enable-msdblib
$ make
$ make install

解释:
安装freetds到目录/usr/local/freetds:--prefix=/usr/local/freetds
支持MSSQL2000:--with-tdsver=8.0 --enable-msdblib

//2.2配置FreeTds的库文件

//将freetds的库文件所在路径配置到LD_LIBRARY_PATH参数中:

//$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/freetds/lib/:


设置bin路径

$vi /root/.bashrc

添加内容如下:

export FREETDS=/usr/local/freetds
export $PATH="$PATH:$FREETDS/bin"

注意: freetds的压缩包不能放到VM的共享目录下解压和编译安装

freeTDS 安装过程:
假定FreeTDS的源代码目录为。
假定FreeTDS的安装目录为,默认为/usr/local/src。
下面配置FreeTDS,--prefix为设置FreeTDS的安装目录,--with-tdsver是设置TDS版本,--enable-msdblib为是否允许Microsoft数据库函数库:
cd 
./configure --prefix= --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static
编译并安装:
make
make install
cd ..
FreeTDS默认安装在/usr/local/freetds目录当中,库文件在相应的lib目录下。
编辑/etc/ld.so.conf,在其中插入一行:
/usr/local/freetds/lib
然后运行以下指令使更改生效:
ldconfig

Liunx下访问SQL2000的好工具!

相 信玩Liunx系统的同志们不会不知道FreeTDS这个工具吧。这个东东最大好处就是能够在Liunx下访问Sybase及MS SQL;FreeTDS的作者在其网站上称能在Unix下访问,不过我没看到有Unix下版本的下载。现在For Linux的最新版本为:freetds-0.63 ;下载地址为:http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-0.63.tar.gz 下面我就说说安装方法与使用方法吧。
1.下载freetds-0.63。一定要下载063版本,好面我将会告诉大家0.63版本的好处。
2.将freetds-0.63.tar.gz ftp上Liunx任意目录。解包,进入解包后的文件夹内。更换到root用户(最好是root权限,其他帐号在编译时会有权限问题)
3.下面配置FreeTDS,FreeTDS参数先说明一下:--prefix为设置FreeTDS的安装目录,--with-tdsver是设置TDS版本,--enable-msdblib为是否允许Microsoft数据库函数库。
现在我们在目录下键入:
./configure --prefix= --with-tdsver=8.0 --enable-msdblib --enable-dbmfix --with-gnu-ld --enable-shared --enable-static
注意:一定要 tdsver=8.0 才支持MS SQL2000,tdsver=7.0支持的是MS SQL7
接着编译并安装:
make
make install
这样基本OK,不够我们还有配置下/etc/freetds.conf 文件,按照文件帮助加入自己MSSQL的IP及其配置信息。下面,我列出我的freetds.conf MS 2000 配置信息。

# A typical Microsoft SQL Server 2000 configuration
[IBMSQL]
host = 10.10.10.211
port =1433
tds version 8.0
呵呵,简单吧,其实就是把你的 SQL2000 数据库 及1433 端口(MS SQL均为1433端口)与IBMSQL这个符号名捆绑一下。当然不配置这些参数其实也可以访问MS SQL的。

4.在任意目录键入: 
tsql -H MSSQL服务器服务IP -p 1433 -U MSSQL服务器登陆帐号 -P MSSQL服务器登陆密码
例如:tsql -H10.10.10.211 -p1433 -Usa -P123456
或者:tsql -SIBMSQL -p1433 -Usa -P123456
剩下如果输出:> 则代表你成功了。准备输入 select * from 数据名.dbo.表明 吧 ;然后 go
当然还有BCP工具,使用freebcp ,大家可以参考帮助,我不多说了,也非常好用。
5.总结:刚开始我安装好freetds后老是访问不了MSSQL,所以大家的MSSQL2000 一定要升级到
SP4(sp3估计也可以);最大的喜讯是:freetds-0.63 支持中文了。可以查询出中文信息,而不是使用?号代替了。呵呵,爽一个字了的。
对了,我用它访问我的Linux下Sybase数据库,也非不错。

1 概述 
在 linux下连接MSSQL是一件很痛苦的事,因为微软同志没有提供任何接口给开发人员,还好,MSSQL是从Sybase衍生出来的,FreeTDS是 一个数据库底层的驱动程序,用freetds的库进行开发是一件很方便的事。freetds可以连接sybase和ms sql server数据库。 
2 安装,配置,测试 
官方网站:http://www.freetds.org 
版本:0.64 
$ tar -zxvf freetds-stable.tgz 
$ ./configure --prefix=/usr/local/freetds 
$ make 
$ su root 
$ make install 
$ tsql -H 2.2.2.2 -p 1433 -U test -P test 
tsql说明: 
H:数据库IP 
p:数据库端口 
U:用户名 
P:密码 
3 linux下C/C++开发 
3.1 利用freetds自带的程序开发 
位置在freetds-0.64/src/apps 
$make clean 
$make 
3.2 利用freetds库快速开发 
testsybase.c

代码:
#include <stdio.h> 
#include <string.h> 
#include <stdlib.h> 
#include <unistd.h>  
  
#include <sybfront.h> 
#include <sybdb.h> 
  
  
  
int main(void) 

       char szUsername[32] = "test"; 
       char szPassword[32] = "test"; 
       char szDBName[32] = "test"; 
       char szServer[32] = "2.2.2.2:1433"; 
  
       //初始化db-library 
       dbinit(); 
       //连接数据库 
       LOGINREC *loginrec = dblogin(); 
       DBSETLUSER(loginrec, szUsername);        
       DBSETLPWD(loginrec, szPassword); 
       DBPROCESS *dbprocess = dbopen(loginrec, szServer); 
       if(dbprocess == FAIL){ 
              printf("ASB>>      Conect MS SQL SERVER fail       \n"); 
              return 0; 
  
       }else{ 
              printf("ASB>>      ConnectEMS conect MS SQL SERVER success\n"); 
       } 
       if(dbuse(dbprocess, szDBName) == FAIL){ 
              printf("ASB>>      Open database name fail\n"); 
       }else{ 
              printf("ASB>>      Open database name success\n"); 
       } 
        
       //查询数据库 
       dbcmd(dbprocess, "select ID,BeginTime,Description from Alarms"); 
       if(dbsqlexec(dbprocess) == FAIL){ 
              printf("ASB>>      Query Alarms table error\n");      
       } 
        
       DBINT result_code; 
       char szID[1024]; 
       char szBeginTime[1024]; 
       char szDescription[1024]; 
       int rows = 0; 
       while ((result_code = dbresults(dbprocess)) != NO_MORE_RESULTS){ 
              if (result_code == SUCCEED){ 
                     dbbind(dbprocess, 1, CHARBIND, (DBINT)0, (BYTE*)szID); 
                     dbbind(dbprocess, 2, CHARBIND, (DBCHAR)0, (BYTE*)szBeginTime); 
                     dbbind(dbprocess, 3, CHARBIND, (DBCHAR)0, (BYTE*)szDescription); 
 
                     while (dbnextrow(dbprocess) != NO_MORE_ROWS){                         
                            printf("ASB>>             ID=%s\n", szID); 
                            printf("ASB>>             szAid=%s\n", szBeginTime); 
                            printf("ASB>>             szBeginTime=%s\n", szDescription); 
                     } 
              } 
       } 
       //关闭数据库连接 
       dbclose(dbprocess); 
        
       return 0; 
}


编译: gcc -o testsybase testsybase.c ./src/dblib/.libs/libsybdb.a 

 类似资料: