查詢通知 實時監控SqlServer表變化

2021-09-17 18:30:04 字數 1607 閱讀 4338

查詢通知是基於service broker基礎結構的,使應用在資料改變時接收到通知(應用程式可以請求sqlserver在查詢結果發生改變時發出通知)。在ado.net中有三種方式:

通知語句

每個查詢通知訂閱生成乙個通知事件。通知發生後,sql server 將刪除通知訂閱。因此,再次需要通知的應用程式必須對檢索已更改資料的命令請求新通知。

可以使用select或execet設定通知語句:

execute:將執行的命令而非語句本身註冊乙個通知;命令有select類似的要求與限制;

批處理或儲存過程的訂閱請求,會針對批處理或儲存過程內執行的每個語句發出單獨的訂閱請求;

提交重複的活動訂閱,則會導致使用新的指定超時值續訂現有訂閱;

建立通知時必須對資料庫具有create service/queue/procedure許可權才能使用sqldependency,同時必須授予使用者subscribe query notifications許可權:

grant subscribe query notifications to username

sqldependency示例

以資料庫xtest,表tx_flag(changed int, info varchar(100)為例進行說明。

啟用監聽服務

alter database xtest set new_broker with rollback immediate;

alter database xtest set enable_broker;

new_broker用於啟用 service broker 訊息傳遞,同時為資料庫建立新的 service broker 識別符號。所有當前已有訊息訂閱都會返回乙個錯誤。

查詢是否啟用了broker

select is_broker_enabled from sys.databases where name = 'xtest' 

為普通使用者授予訂閱許可權:

grant subscribe query notifications to myname

開始監聽服務

string _strconnection = "data source = 192.168.1.100;initial catalog = xtest;user id = myname;password = mypsw;"

private static void querynotice(string strcon_)

} }

private static void dependency_onchange(object sender, sqlnotificationeventargs e)

: ", datetime.now, e.source, e.info, e.type); //source資料庫通知為data,超時為timeout;

querynotice(_strconnection ); //這裡要再次呼叫 }

static void main(string args)

當在tx_flag中插入資料、刪除資料或更新changed列時,都會收到通知。

kafka實時監控

在kafka的開發和維護中,我們經常需要了解kafka topic以及連線在其上的consumer的實時資訊,比如logsize,offset,owner等。為此kafka提供了consumeroffsetchecker,它的用法很簡單 bin kafka run class.sh kafka.to...

實時微信網域名稱監控通知 微信網域名稱檢測API介面分享

請求方式 http get post 返回格式 json 請求示例 http json返回示例 網域名稱正常 網域名稱已 php url params array url www.monkeyapi.com 需要查詢的 請求介面返回內容 param string url 請求的url位址 param...

日誌實時監控 上傳

摘要 日誌實時監控 關鍵字 common io monitor包,生產消費模式,非阻塞佇列,鉤子 看點 1.如何監聽檔案改變 common io提供minitor工具,可以監控檔案的改變 file directory new file logpath long interval timeunit.s...