會想用這個 |
是曾經發生過 |
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 部分算好用 |