會想用這個 是曾經發生過 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;
我沒做什麼odbc相關設定 |
---|
因為我用的是DBI |
相關的模組預設就已經包了進去 |
所以存取SQL Server 部分算好用 |