安裝FreeTDS

分類: 技術分享 作者: andrew

8 1 月 2009

FreeTDS 是 Linux 環境下 php 連接 MS SQL Server 的解決方案,以下記載安裝方式:

[安裝FreeTDS]
1. 解壓下載回來的FreeTDS : FreeTDS 官方網站下載(http://www.freetds.org/)
tar -zxvf freetds-stable.tgz(檔名可能會因釋出的版本而有所差異)

2.進入解壓後的目錄
cd freetds-0.64 (解壓後的資料夾名稱)

3.對FreeTDS進行編譯及安裝
./configure --prefix=/usr/local/freetds --enable-msdblib --with-tdsver=7.0 //指定版本
make
make install

[設定FreeTDS]
1.開啟/etc/ld.so.conf這個檔案
vim /etc/ld.so.conf

2.於檔案最後加入一行
/usr/local/freetds/lib

3.存檔後離開

4.於命令提示符號下,輸入下方指令
ldconfig

5.開啟/usr/local/freetdds/etc/freetds.conf
vim /usr/local/freetds/etc/freetds.conf

6.在檔案的最下方加入
[MSsql]
host = your.mssql.server.ip
port = 1433
client charset = cp950
tds version = 8.0

說明:[ ]內的值是未來使用對sql server連線時的別名代稱,不一定要叫做MSsql
host 的值則是mssql server的位置
tds version: 4.2 (適用 MS SQL Server 6.x);
7.0 (適用 MS SQL Server 7.x);
8.0 (適用 MS SQL Server 2000)
cp950 代表繁體中文字頁碼 (Code Page: 950; ANSI/OEM - Traditional Chinese Big5)

7.下以下指令
touch /usr/local/freetds/include/tds.h
touch /usr/local/freetds/lib/libtds.a

[測試FreeTDS]
1.到freetds的執行目錄下
cd /usr/local/freetds/bin

2.執行連結至sql server
./tsql -S MSsql -U LoginName

說明:-S指的是以Server name連線,如果要以hostname做為連線方式,請將『-S』的參數改為『-H』
MSsql就是之前在設定時指定的別名代稱
若是連線成功後,會顯示『1>』的命令提示字元

3.輸入sql指令,測試是否可正常取得資料
1> use DB_Name 按enter (不要加;)
2> select * from Table_Name 按enter (不要加;)
3> go 按enter (不要加;)

說明:1>、2>、3>都是在輸入之後,鍵入enter會自動產生的行數提示字元,
直至輸入go之後,才會真正的執行語法

4.資料若有顯示時,代表成功了....退出tsql
quit

[重新編譯PHP]

1.使用phpinfo()的函式,將原先已編譯過的參數複製下來。

2.在原先就有的編譯參數中,加上這一段,形成新的編譯參數
--with-mssql=/usr/local/freetds

3.至php source code的folder之下,進行重新編譯的動作
./configure ......................
(......指的是第二步驟的編譯參數)

4.接續執行下列二個指令,以完成重新編譯的動作
make
make install

5.如果只是單純的附加mssql連線的編譯的話,原則是不需更新php.ini內的設定,
如果必須要使用新產生的php.ini取代舊設定時,可將php.ini-dist這個檔案覆蓋掉原有的php.ini檔

6.重新啟動apache
/etc/rc.d/init.d/httpd restart

7.以PHP本身既有的函式,進行PHP取得資料測試
mssql_connect('MSsql','LoginName','Password');
mssql_select_db("DB_Name");
$rs = mssql_query("select * from Table_Name");
$rs_data = mssql_fetch_row($rs);
echo $rs_data[0];

8.以ADODB進行PHP取得料測試

$MSconn = NewADOConnection('mssql');
$MSconn->PConnect("MSsql", "DB_Name", "LoginName", "Password");
$rs = $MSconn->Execute("select * from Table_Name");
echo $rs->fields(0);

[經驗分享]
web-php程式撈出資料時中文出現???的解決方式:
更改php.ini中
;mssql.charset = "ISO-8859-1"
變更為
mssql.charset = "cp950"
之後apache重啟即可正常顯示

[延伸閱讀]
rpm方式安裝
http://www.wretch.cc/blog/ur88/3233304

1 Response to 安裝FreeTDS

Avatar

Sommelier

10 月 14th, 2009 at 5:04 下午

十分感謝

按照你的說明步驟,本人終於完成安裝FreeTDS

但是對於FreeTDS仍有一個疑問?

就是FreeTDS原廠說明文件中?

說明FreeTDS已有提供Windows NT Authentication功能?

但是經過本人Google?

卻都沒有看過相關設定?

不知你是否有使用過這個功能呢?

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。