天天看點

SqlServer 監控釋出中未分發的指令數

對于檢視未分發的指令數,我們通常這樣檢視。

SqlServer 監控釋出中未分發的指令數

然而當伺服器有很多釋出時,一個個打開檢視就很麻煩

SqlServer 監控釋出中未分發的指令數

當然,如果想用腳本檢視就更友善了,運作下面的語句

上面自動生成各個釋出 未分發的指令的存儲過程,執行就能檢視各個釋出等待分發的指令和估計時間:

SqlServer 監控釋出中未分發的指令數

但是,由于監控需要,隻想統計所有釋出未分發的指令數“ pendingcmdcount”的總和,

本來想用下面這個方法把各個存儲過程的傳回值插入到臨時表,但是沒有這種方法!!

上面這個方法也可行,但是隻在本地的測試可行。就是建立連結伺服器,加到資料庫distribution前面。

實際伺服器有本地的連結伺服器,但是沒顯示出來,也用不了。雖然可以建立其他命名的,但不想建立太多連結伺服器。

于是想到更改系統的存儲過程!!~錯了,是參考系統存儲過程建立一個幾乎一樣定義的存儲過程。

即不需要distribution.sys.sp_replmonitorsubscriptionpendingcmds ,建立類似的dbo.sp_getsubscriptionpendingcmds ,如下

上面的存儲過程主要更改3個地方,然後在其他一個資料庫運作,頁可在distribution運作。

1. 多一個傳回參數,@pendingcmdcount int output ,傳回未分發的指令數

2. 估計時間不需要,去掉

3. 查詢的每個表或内部存儲過程加資料庫字首distribution

接下來再用一個存儲過程把所有值加起來,給計數器!

SqlServer 監控釋出中未分發的指令數

建立一個作業,定時每分鐘執行,觀察性能計數器統計情況。

SqlServer 監控釋出中未分發的指令數

這樣也可以再cacti捕獲了!~

SqlServer 監控釋出中未分發的指令數