Linux下通過freetds串連MSSQL資料庫解決方案

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.