f strawberry perl 存取sql server ~ 迪貝之家

Pages

strawberry perl 存取sql server

 

會想用這個
是曾經發生過
sql server replication的delay監控
因為issuer與subscriber間的網路疑似曾斷線過
造成警訊送不出來
因為當時連我自己透過sqlcmd 以openrowset的方式來執行
distribution.dbo.sp_replmonitorsubscriptionpendingcmds
用以監控他這隻procedure所評估的delay也不work
怪了~~明明就是一個新連線,怎會不work
算了...不研究....
因為它黑箱太多了
所以就想以另一種方式來處理subscriber的delay監控
windows 上的perl不是strawberry就是activestate perl
我的選擇是berry,因為它有portal 版
監控的想法是
在issuer建一個有時間欄位的供複寫的表格
透過perl開兩個連線去撈出值來比對就知道時間差了
因此就先來try try 連線存取coding的寫法
如下 :

 use DBI;

use strict;

use warnings;

my $host     = '10.0.0.1';

my $database = 'master';

my $user     = 'sa';

my $auth     = 'your password';


my $dsn = "dbi:ODBC:Driver={SQL Server};Server=$host;Database=$database";

my $dbh = DBI->connect($dsn, $user, $auth, { RaiseError => 1 });

my $sql = qq/select name from sys.databases/;      # the query to execute

my $sth = $dbh->prepare($sql);          # prepare the query

$sth->execute();                        # execute the query

my @row;

while (@row = $sth->fetchrow_array) {  # retrieve one row

    print join(", ", @row), "\n";

}

$dbh->disconnect;

strawberry perl
我沒做什麼odbc相關設定
因為我用的是DBI
相關的模組預設就已經包了進去
所以存取SQL Server 部分算好用