2012-04-05 52 views
0

我有一個ASP.NET Web應用程序,它在SQL Server 2008 R2中的表上做了一些更改。 在此表上有一個觸發器,它在同一數據庫服務器上的另一個數據庫中的另一個表上執行更新。實體框架激活觸發到其他數據庫:錯誤

保存更改時,出現以下錯誤: - 錯誤消息:提交時底層提供程序失敗。 - InnerException:此SqlTransaction已完成;它不再可用。

還允許數據庫用戶連接到另一個數據庫不起作用。

有人知道我該如何做這項工作?

+3

第1步 - 找到誰實施這個觸發器並傷害他們。觸發器應該*不*訪問外部資源(在這種情況下,即使它在同一個實例上,另一個數據庫也是外部資源)。 – 2012-04-05 09:58:26

+0

第1步完成。保持數據庫同步的最佳方法是什麼? MS Sync框架或複製服務? – JurgenStillaert 2012-04-05 10:10:05

+0

如果它正在同步數據庫,是的,可能會指示某種類型的複製。如果它是更新/審計相關數據,您可能會考慮類似服務代理。 – 2012-04-05 10:21:06

回答

0

該觸發器與實體框架無關。

當對錶格進行更改時觸發器觸發,而不管該更改來自何處。

這可能是一個權利問題,系統正在嘗試使用用於連接到第一個數據庫的安全上下文對第二個數據庫進行更改。它由觸發器引起的更改失敗,那麼同一事務中的所有內容都將失敗。

由於您正在訪問交易中的2個數據庫,因此您正在使用MSDTC,請確保它已啓動並且您有權使用它。