2011-06-13 61 views
2

我們有一個不幸的例子,其中很多應用程序直接與數據庫對話(主要是本機應用程序,我們的託管應用程序通過DAL)。我們有300多個表格,需要根據對某些表格的修改來引發事件。這些事件將通過企業服務總線(nServiceBus)或MSMQ提出,我們的應用程序將掛鉤這些事件。基於數據庫插入/更新合併和引發事件?

例如:

  • 如果在表1中的插入和表2中的更新,提出了一些事件。
  • 如果表1中有更新,表2中的刪除和表3中的更新引發了一些事件。

在所有我們預計不會超過25個事件,每個事件最多不會超過5個表。

信息:

  1. 我們做了很多的長時間運行的任務,我們的應用程序需要調查完成。
  2. 我們有一些真正舊的應用程序直接與數據庫進行對話,並將其更改爲使用某種DAL不是一種選擇。
  3. 我們需要做一些簡單的事件過濾,以便某些事件只被審覈而不會引發。
  4. 我們正在使用SQL Server 2008 R,但在我們的所有安裝站點上可能沒有企業許可證。

我們正在尋找一種我們可以接入的CDC解決方案。指向可能的解決方案或輸入/經驗將是非常有幫助的:)

回答

0

我寧願避免這種情況,並避免了幾次。

我的備份計劃(即制定了一個草圖,但從未實現)是:

  • 使用觸發器消息喂到隊列
  • 使用Service Broker的閱讀這些消息
  • 在服務代理使用.NET程序集調用WCF服務(或者可能在MSMQ上發送消息)。

使用隊列和Service Broker意味着觸發器不需要任何重要的處理並阻塞客戶端。