2010-02-25 63 views
0

我是SQL新手。我的生產數據庫中有大量的存儲過程。我計劃編寫一個審計表,供這些存儲過程用來跟蹤更改(這些存儲過程將寫入此審計表)。但問題是,當事務回滾時,插入到審計表中的行也會回滾。有什麼辦法可以創建一個不受事務回滾影響的表。任何其他的想法,滿足我的要求是值得歡迎的!在SQL Server中創建審計表不受事務回滾影響

回答

3

不能,一旦會話開始一個事務,該會話中的所有活動都包含在事務中。

你可以做的是打開一個不同的會話,例如一個CLR過程,它作爲一個普通的客戶端(不使用上下文連接)連接,並從這個連接進行審計。

但是回滾的審計操作有點不同尋常,因爲您正在審計事務從未出現從數據庫的角度來看,審計記錄和實際的數據庫狀態將會發生衝突。

1

,如果你想知道什麼是回滾這裏確定爲你做什麼:

讓你exisiting審計過程中處理成功的插入。

將插入的值放入sp中的表變量中。它是一個表變量而不是臨時表是很重要的。現在在事務的catch塊中執行回滾。這不會清除表變量。然後在表格變量中插入值(將一個字段添加到audt表中,以便您可以將記錄標記爲回退,可能還有一個用於出現錯誤消息。)

我們不專門爲審計,但我們已經這樣做來記錄錯誤。