今天在linux上用perl連線sqlserver,執行儲存過程,獲取一個結果集
use DBI;
use Data::Dumper;
$dbh=DBI->connect('dbi:ODBC:TEST','perf_gather',‘1234567’);
my $hash_row = $dbh->selectrow_hashref("exec DBA.Insert_Performance_counter");
print Data::Dumper->Dumper($hash_row);
$dbh->disconnect;
其中在Linux上配置連線sqlserver是比較麻煩的。我參考瞭如下文件:
其中下邊紅色部分還是增加一下的好,否則會抱怨沒有Qt之類
Linux使用perl透過unixODBC連線SQLServer2000
一、關於測試環境及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連線系統的SQLServer資料庫;
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
# cd unixODBC-2.2.8
# ./configure --prefix=/usr/local/unixODBC --enable-gui=no
# make
# make install
2、安裝freetds
# 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
在安裝之前要先設定一下環境變數
之後開始編譯安裝
# cd DBD-ODBC-1.12
# perl Makefile.PL
# make
# make install
所有的軟體到現在都安裝完成了,接下來就是配置了
4、配置freetds
# vi etc/freetds.conf
修改以下的一段,並把;去掉
改好之後的內容:
host=192.168.0.32
port=1433
tds version=8.0
其中的[MyServer2k]代表在客戶端使用的名稱,host代表SQLServer的IP地址,port代表埠,測試連線;
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
向ODBC新增SQLServer驅動
寫入如下內容:
Description = MS-SQLServer ;描述
Driver = /usr/local/freetds/lib/libtdsodbc.so ;驅動程式
Setup = /usr/local/freetds/lib/libtds.so ;不要問我,我也不知道這是什麼
FileUsage = 1
儲存退出
新增DSN
寫入如下內容
Driver = TDS ;ODBC驅動
Server = 192.168.0.32 ;伺服器IP
Database = gameDB ;要使用的資料庫
Port = 1433 ;埠
Socket =
Option =
Stmt =
儲存並退出,測試ODBC的連線
SQL> select count(*) from t_ip
+----------+
| |
+----------+
| 4 |
+----------+
SQL> quit
OK,測試透過,開始測試perl能否正確使用ODBC
在使用perl連線ODBC之前要做些準備工作
把ODBC的共享庫都複製到/usr/lib目錄
6、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";
}
儲存退出
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82392/viewspace-238018/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- Oracle 儲存過程返回結果集|轉|Oracle儲存過程
- Oracle 儲存過程返回結果集 (轉)Oracle儲存過程
- sqlserver2008連結伺服器中執行儲存過程配置過程SQLServer伺服器儲存過程
- java使用mybatis 呼叫儲存過程返回一個遊標結果集JavaMyBatis儲存過程
- sqlserver 常用儲存過程集錦SQLServer儲存過程
- 儲存過程結果進行查詢 select 存過過程儲存過程
- mssql 儲存過程呼叫另一個儲存過程中的結果的方法分享SQL儲存過程
- JAVA + Oracle儲存過程返回查詢結果集JavaOracle儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- perl呼叫儲存過程儲存過程
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- 獲取某庫某個儲存過程內容儲存過程
- 如何查詢一個儲存過程是否在執行儲存過程
- Sqlserver中的儲存過程SQLServer儲存過程
- 幾個實用SQL Server取儲存過程SQLServer儲存過程
- 獲取任務的執行結果
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- PHP PDO獲取結果集PHP
- SqlServer-儲存過程分頁SQLServer儲存過程
- 儲存過程中巢狀儲存過程的變數執行方式儲存過程巢狀變數
- 【Spark】 Spark作業執行原理--獲取執行結果Spark
- Linux使用perl透過unixODBC連線SQLServer2000(轉)LinuxSQLServer
- PostgreSQL獲取建表語句儲存過程SQL儲存過程
- shell中獲取儲存過程返回值儲存過程
- 儲存過程獲取表被引用的資訊儲存過程
- /*動態執行儲存過程DEMO*/儲存過程
- SQLServer執行儲存過程失敗(sys.xp_cmdshell)問題處理SQLServer儲存過程
- 應用儲存過程執行報錯解決方案儲存過程
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- ADO中sqlserver儲存過程使用SQLServer儲存過程
- 獲取多臺主機命令執行結果
- laravel建立一個儲存過程Laravel儲存過程
- 檢視正在執行的儲存過程儲存過程
- 執行Sybase儲存過程並返回ResultSet儲存過程
- 使用ADO執行儲存過程 (轉)儲存過程
- 使用Command執行儲存過程 (轉)儲存過程