摘要: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 ( http://www.unixodbc.org)
連接SQLServer或Sybase的驅動
freetds-0.62.4.tar.gz ( http://www.freetds.org)
perl的ODBC模塊
DBD-ODBC-1.12.tar.gz ( http://cpan.perl.org)
把下載到的三個文件放到同一個目錄
三、安裝和配置;
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]\n"; }
保存退出
# perl test.pl
如果可以看到數據庫中的記錄,就說明可以正常使用ODBC perl了。
既然已經可以實現perl通過ODBC來連接SQLServer了,那麼同樣可以使用PHP+ODBC+SQLServer,具體方法請查詢PHP官方網站。
四、關於本文
寫完,收工,今天晚上可以不用熬夜了,開心
PS:M$真是害死我了。
五、相關文檔:《sqlrelay 的安裝配置和應用》