在Linux下使用perl透過unixODBC連線SQLServer2000(轉)

worldblog發表於2007-08-10
在Linux下使用perl透過unixODBC連線SQLServer2000(轉)[@more@]

  摘要:MS從來沒有提供過SQLServer for Linux,所以大家也不要去嘗試在Linux系統安裝SQLServer,但是可以透過ODBC連線Windows系統的SQLServer資料庫;

  一、關於測試環境及Linux連線SQL Server 的說明;

  測試環境:

  gcc 3.3.3 , kernel 2.6.5-1 , glibc 2.3.3-27 , perl 5.8.3

  關於SQL Server說明:

  MS從來沒有提供過SQLServer for Linux,所以大家也不要去嘗試在Linux系統安裝SQLServer,但是可以透過ODBC連線Windows系統的SQLServer資料庫;

  Windows Server 2003使用者注意:

  在Windows Server 2003系統上安裝的SQLServer是不會開啟1433埠的,所以請Windows2003使用者在安裝完SQLServer之後一定裝上SQLServer SP3布丁

  二、下載相關軟體 unixODBC、freetds和DBD-ODBC

  首先需要下載3個檔案:

  Linux系統的ODBC

  unixODBC-2.2.8.tar.gz ( )

  連線SQLServer或Sybase的驅動

  freetds-0.62.4.tar.gz ( )

  perl的ODBC模組

  DBD-ODBC-1.12.tar.gz ( )

  把下載到的三個檔案放到同一個目錄

  三、安裝和配置;

  1、安裝unixODBC

  # tar vxzf unixODBC-2.2.8.tar.gz

# cd unixODBC-2.2.8

# ./configure --prefix=/usr/local/unixODBC

# make

# make install

  2、安裝freetds

  # tar vxzf freetds-0.62.4.tar.gz

# cd freetds-0.62.4

# ./configure --prefix=/usr/local/freetds --with-unixodbc=/usr/local/unixODBC --with-tdsver=8.0

# make

# make install

  3、安裝DBD-ODBC

  在安裝之前要先設定一下環境變數

  # export ODBCHOME=/usr/local/unixODBC

  之後開始編譯安裝

  # tar vxzf DBD-ODBC-1.12.tar.gz

# cd DBD-ODBC-1.12

# perl Makefile.PL

# make

# make install

  所有的軟體到現在都安裝完成了,接下來就是配置了

  4、配置freetds

  # cd /usr/local/freetds

# vi etc/freetds.conf

  修改以下的一段,並把;去掉

  改好之後的內容:

  [MyServer2k]

host=192.168.0.32

port=1433

tds version=8.0

  其中的[MyServer2k]代表在客戶端使用的伺服器名稱,host代表SQLServer伺服器的IP地址,port代表埠,測試連線;

  # bin/tsql -S MyServer2k -H 192.168.0.32 -p 1433 -U sa -P password

1> use gameDB

2> go

1> select count(*) from t_ip

4

1> quit

  一切都很順利

  現在來說明以下這些引數的作用,-S MyServer2k是在freetds.conf中定義好的,-H 192.168.0.32伺服器IP地址,和freetds.conf中的一致,如果使用了-S引數,這個引數可以不用,-p 1433用來指定埠是1433 ,-U sa用來指定連線資料庫的使用者名稱,-P password用來指定連線資料庫的密碼。

  5、配置unixODBC

  # cd /usr/local/unixODBC

  向ODBC新增SQLServer驅動

  # vi etc/odbcinst.ini

  寫入如下內容:

  [TDS] ;驅動名稱

Description = MS-SQLServer ;描述

Driver = /usr/local/freetds/lib/libtdsodbc.so ;驅動程式

Setup = /usr/local/freetds/lib/libtds.so ;不要問我,我也不知道這是什麼

FileUsage = 1

  儲存退出

  新增DSN

  # vi etc/odbc.ini

  寫入如下內容

  [123] ;DSN名稱

Driver = TDS ;ODBC驅動

Server = 192.168.0.32 ;伺服器IP

Database = gameDB ;要使用的資料庫

Port = 1433 ;埠

Socket =

Option =

Stmt =

  儲存並退出,測試ODBC的連線

  # bin/isql -v 123 sa password

SQL> select count(*) from t_ip

+----------+

| |

+----------+

| 4 |

+----------+

SQL> quit

  OK,測試透過,開始測試perl能否正確使用ODBC

  在使用perl連線ODBC之前要做些準備工作

  把ODBC的共享庫都複製到/usr/lib目錄

  # cp /usr/local/unixODBC/lib/libodbc.* /usr/lib

  6、perl指令碼測試能否成功;

  # vi test.pl

  內容如下

  #!/usr/bin/perl

use DBI;

$dbh=DBI->connect('dbi:ODBC:123','sa','password');

my $sth=$dbh->prepare("select * from t_ip";

$sth->execute();

while (@data=$sth->fetchrow_array()){

print "$data[0] $data[1] $data[2] ";

}

  儲存退出

  # perl test.pl

  如果可以看到資料庫中的記錄,就說明可以正常使用ODBC perl了。

  既然已經可以實現perl透過ODBC來連線SQLServer了,那麼同樣可以使用PHP+ODBC+SQLServer,具體方法請查詢PHP官方網站。

  四、關於本文

  寫完,收工,今天晚上可以不用熬夜了,開心

  PS:M$真是害死我了。

  五、相關文件

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-940472/,如需轉載,請註明出處,否則將追究法律責任。

相關文章