這個不是新鮮的話題,方法在網路上也都找得到,只是在工作場合中,有人有這個需求,基於好奇的我便將網路上的資料以自己的方式來呈現並記錄。
使用環境:CentOS 5.8、Windows Server 2008、SQL Server 2008。
因為怪癖問題,所以在安裝 CentOS 時是使用最小(最少)安裝的方式,也就是在安裝過程中選擇 自定套件 ,然後在選擇畫面將所有的勾選都取消掉。
系統必要軟體:perl (這是一定要的呀)
make
gcc
wget (若是有別的方法可下載軟體,這個可不裝)
下載軟體:unixODBC (unixODBC-2.3.1.tar.gz)
FreeTDS (freetds-stable.tgz)
ExtUtils::MakeMaker (ExtUtils-MakeMaker-6.64.tar.gz)
Test::Simple (Test-Simple-0.98.tar.gz)
DBI (DBI-1.622.tar.gz)
DBD-ODBC (DBD-ODBC-1.41.tar.gz)
全部採用預設值來安裝及編譯,下載軟體放置路徑:/root
## 安裝 unixODBC
# tar zxvf unixODBC-2.3.1.tar.gz
# cd unixODBC-2.3.1
# ./configure (如無意外,應該會過)
# make
# make install
安裝位置,.so 檔放在 /usr/local/lib 目錄下,設定檔放在 /usr/local/etc 目錄下,執行檔(測試連線及設定用)放在 /usr/local/bin 目錄下。
## 安裝 freetds
# cd
# tar zxvf freetds-stable.tgz
# cd freetds-0.91
# ./configure --with-tdsver=8.0
# make
# make install
安裝位置跟 unixODBC 一樣。
先安裝 ExtUtils-MakeMaker 再安裝 Test-Simple 這兩樣是安裝 DBI 時會用到的,雖然不確定沒裝會不會有問題(應該不會),反正沒什麼麻煩,就順手裝進去
# cd
# tar zxvf ExtUtils-MakeMaker-6.64.tar.gz
# cd ExtUtils-MakeMaker-6.64
# perl Makefile.PL
# make
# make test (可省略,反正沒什麼事,執行一下)
# make install
# cd
# tar zxvf Test-Simple-0.98.tar.gz
# cd Test-Simple-0.98
# perl Makefile.PL
# make
# make test
# make install
再來裝 DBI
# cd
# tar zxvf DBI-1.622.tar.gz
# cd DBI-1.622
# perl Makefile.PL
# make
# make test
# make install
最後安裝 DBD-ODBC
# cd
# tar zxvf DBD-ODBC-1.41.tar.gz
# cd DBD-ODBC-1.41
# perl Makefile.PL
# make
# make test
# make install
在所需要的軟體都裝好後,可以開始來設定及測試,因為整個的流程是 Perl 程式 -> DBI -> DBD-ODBC -> unixODBC -> freetds,所以先設定及測試 freetds。
編輯 /usr/local/etc/freetds.conf (因為裡面己經有兩個設定,為了簡單化,先將原本的更名,直接編輯一個新的)
# cd /usr/local/etc
# mv freetds.conf freetds.conf.old
# vi freetds.conf
[MSSQL]
host = 192.168.1.50 (SQL Server 的 IP)
port = 1433
tds version = 8.0
編輯好後存檔,便可以利用 tsql 來測試設定
# tsql -S MSSQL -U sa -P 0000000000 (帳號:sa;密碼:0000000000)
如果出現 1> 的話,就代表設定沒問題,己連線成功,輸入 quit 離開。
編輯 /usr/local/etc/odbcinst.ini 跟 /usr/local/etc/odbc.ini,因為兩個都是空檔案,所以直接編輯就好。
# cd /usr/local/etc
# vi odbcinst.ini
[TDS]
Driver = /usr/local/lib/libtdsodbc.so
Trace = No
FileUsage = 1
編輯釨後存檔
# vi odbc.ini
[mssql]
Driver = TDS
server = 192.168.1.50
Database = msdb
Port = 1433
TDS_Version = 8.0
編輯好後存檔,然後可以利用 isql 來測試設定
# isql -v mssql sa 0000000000
如果出現 SQL> 提示符號就代表己經連線成功,設定部份沒有問題,輸入 quit 離開。
這中間還有一樣東西需要做設定,那便是 LD_LIBRARY_PATH=/usr/local/lib,需要此一設定,後續的 Perl 程式才能順利的使用到自行安裝的 Library。
# export LD_LIBRARY_PATH=/usr/local/lib (這是應急用的,若要機器重開後生效,必須設定在別處。)
或是編輯 /etc/ld.so.conf 加入一行/usr/local/lib,然後執行
# ldconfig
最後,寫一個簡單的 Perl Script 來測試
# cd
# vi test.pl
#!/usr/bin/perl
use DBI;
use DBD::ODBC;
$dbh = DBI->connect('dbi:ODBC:mssql','sa','1111111111');
my $sth = $dbh->prepare("select * from sysjobs");
$sth->execute();
while (@data=$sth->fetchrow_array()){
print "$data[0] $data[1] $data[2]\n";
}
如無意外,可以撈出 SQL Server 上 sysjobs 中的資料。
留言列表