2012-09-17 61 views
4

根據幾個資源,如this是否有可能阻止觸發器在事務中運行?

被觸發的上下文內執行的查詢自動包裝在一個事務。如果觸發代碼中有任何分佈式查詢,則該事務將自動提升爲分佈式事務。

簡單的問題 - 有沒有辦法來防止這種行爲?我正在尋找一種方法來明確防止觸發器中的代碼在事務上下文中運行。

+0

http://stackoverflow.com/questions/174600/is-there-a-way-to-disable-a-sql-server-trigger-for-just-a-particular-scope-of-ex – zloctb

回答

3

如果您試圖做一些異步的事情,以便調用事務不必等待,您可以考慮Service Broker,這樣做的目的是完成這一任務 - 從一些異步任務中啓動並返回控制給調用者,無論交易範圍如何。

另一個想法是沒有觸發器執行工作,而是將工作項目彈出到隊列表中,並且後臺進程連續運行以處理隊列。如果您的工作項目使用inserted/deleted中的一組數據,但沒有更多上下文,那麼這不一定很容易,但它肯定似乎是一種可行的選擇。

我不知道一種方法來防止觸發器成爲調用事務的一部分 - 事實上,這是一個重點。

1

這被稱爲「自治事務」,實現的最簡單方法是創建鏈接服務器以指向原始數據庫。

請參閱this MSDN blog以獲得可能的解決方案。

相關問題