這個不是新鮮的話題,方法在網路上也都找得到,只是在工作場合中,有人有這個需求,基於好奇的我便將網路上的資料以自己的方式來呈現並記錄。

  使用環境: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 中的資料。

創作者介紹
創作者 金鋼芭比 的頭像
金鋼芭比

深深的海底

金鋼芭比 發表在 痞客邦 留言(0) 人氣()