FreeTDS的安裝與配置
官方網站: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