2015-12-21 65 views
1

我有一個Microsoft SQL Server 2008(SP3)正在運行,並希望在某些其他無法訪問的應用程序添加或刪除特定表中的行時進行通知。我知道我可以使用觸發器來操縱插入或刪除等數據(sql),但不知道如何監視表和通知。我想要構建顯示通知的客戶端可以是wpf xaml應用程序,通用Windows項目或Web應用程序。所以問題是監測表和觸發發送某種通知(或其他網絡電話或某事)之間的連接通知應用程序插入或刪除的行

我需要Notification Services或有更好/更簡單的方法嗎? 或者您會建議使用CLR trigger?或者WPF Data trigger?這對我來說似乎是最簡單的。

編輯 我的期望的輸出將是一種監視應用程序的,其顯示這樣的:

時間,產品代碼,數量,移除/添加的是這樣的:

  • 9: 45分:2銳tv的加入
  • 上午10時15分:5層飛利浦電視機的除去

編輯2SqlDependencymsdn提出了很多建議說:

在一般情況下,大多數non-ASP.NET應用程序應該使用的SqlDependency對象。 ASP.NET應用程序應該使用更高級別的SqlCacheDependency,它包裝了SqlDependency並提供了一個管理通知和緩存對象的框架。

但我看不到我如何查看刪除的行。因此,也許可以在表格中添加觸發器在消息表中插入消息product 123 removed 5 times。和product 456 added 15 times在消息表中,然後sqldependency新的待創建的消息表?

+0

我不
打印 '被刪除的記錄'當然,但你可以使用sqldependency https://msdn.microsoft.com/en-us/library/62xk7953%28v=vs.110%29.aspx –

+0

SqlDependency對象可以與SqlCommand相關聯,以便檢測何時查詢結果與最初檢索的結果不同。您還可以將委託分配給OnChange事件,當相關命令的結果發生變化時將觸發該事件。在執行該命令之前,必須將SqlDependency與該命令相關聯。 SqlDependency的HasChanges屬性也可用於確定自數據首次檢索以來查詢結果是否已更改。 –

+0

所以只需一個'select * from table'然後一個sqldependency來注意它是否有更多或更少的行。然後手動搜索哪些行在哪裏? –

回答

0

這裏的審計是我的表,它引發了一些消息,當一些事情發生在表上。
創建審計觸發器tr_audit_all後刪除,插入,更新
作爲 開始
如果存在(選擇1從插入)和不存在(缺失了選1)
開始
打印 '記錄插入'
SELECT *從插入


如果存在(選擇1從插入)和存在(選擇1從刪除)
開始
RAISERROR( '記錄插入',1,15)

如果不存在(選擇1從插入)和存在(選擇1從刪除)
開始


降觸發tr_audit_all

相關問題