2009-09-23 120 views
0

我的僱主開發了一個實用程序,它將逐行運行存儲過程,並將每行的字段作爲參數傳遞給存儲過程。這對自動導入特別有用。在事務處理期間跟蹤SQL Server中的更改

不過,我現在需要擴展,以提供一個交易,美化版版本,所以我們可以看到在運行實用程序提供什麼樣的變化都會對數據庫彙總的潛在結果。這可能與「客戶表中的3行插入」或「訂單表中修改的5行」一樣多。然後用戶可以決定是否繼續進行真正的導入。

我知道觸發器可以設置在表上,但我不知道這是有可能在這種情況下,由存儲過程引用的所有表不得而知。

是否有觀看事務期間所做的更改任何其他方式,或者有沒有人對我怎麼能做到這一點任何其他建議?

非常感謝。

回答

0

編輯根據反饋和重新閱讀的問題:

我在與萊姆斯同意數據沒有嚴重的進口商希望目測檢查數據,因爲它被導入到系統中。

作爲ETL作家,我希望做到這一點在我的暫存區,並運行驗證我的數據之前,它被導入到實際生產地查詢。

你也可以通過實現功能,「持有」的交易直至看到有人OK'ed得到與資源,死鎖和蓋帽的問題。

+0

疾病預防控制中心不會做他想要的。它會記錄發生了什麼但不提供回滾功能。如果你重讀他的問題,仍然認爲CDC是一個可能的解決方案,請多解釋一下。 – 2009-09-23 18:47:37

+0

@RobGarrison:謝謝你指出。我錯過了關於回滾部分的部分 - 只回答了INSPECT CHANGES部分。 – 2009-09-23 19:22:07

0

您快照當前LSN,運行YOUT「逐行」在交易過程中,然後用fn_dblog回讀LSN後您快照日誌。所做的更改是日誌中記錄了當前事務標識的記錄。包裝器事務可以回滾。當然,這隻會在客戶和5行訂單中導入3行,沒有嚴重的僱主會考慮在實際大小的導入工作上做這樣的事情。想象一下,導入1 mil訂單只是爲了統計它們,然後回滾...

這將不適用於任何任意程序,儘管通常時間過程使自己的事務管理,並且它們不能按預期的方式調用時在包裝交易。