2009-08-06 17 views
0

我一直在爲我的數據庫中的一些表提供單個審計表的想法。我發現在這個頁面上的代碼:http://www.simple-talk.com/sql/database-administration/pop-rivetts-sql-server-faq-no.5-pop-on-the-audit-trail/查詢單個審計表以進行報告

我喜歡這個想法,但唯一讓我感到有點困惑的是你如何查詢信息,以便它可以以有用的方式顯示。

後你做一些修改審計表看起來像這樣: alt text

大部分時間

爲了做歷史,我只想做表的副本和日期 修改列添加到末尾,則只需將整行復制到歷史記錄表中,但如果您有許多事項需要審覈,則會創建大量複製數據和大量歷史記錄表。

回答

2

我必須說我認爲這種審計模式是一場噩夢。我想你已經無意中發現了原因。使用這種方案重現數據非常非常困難,原因不在於您沒有數據類型的變化。即使你這樣做了,你在字符串和原生數據類型之間的轉換中也會失去精確度。

不,我認爲你最初的想法要好得多 - 只是簡單地將表格行切掉即可。大多數情況下,您不必擔心消耗的額外空間。空間比較便宜,比較了通過按列降低更改的可用性折衷。

另外請記住,文章描述的方案甚至不會爲非常狹窄的表節省空間!它實際上可能比行級審計更大。

+0

我想一個產品支持工程師這取決於你打算如何使用您的審計數據的工作。例如,假設您有一個擁有50個相關表的員工。如果用戶想要查看自某個特定日期以來員工發生變化的所有內容,那麼查詢50個表格將是一場噩夢。但是,對於單個表來說,這將是微不足道的。但是,如果您需要自動恢復審計數據,而不是僅僅報告它,我會全心全意地同意您的意見。 – 2010-11-13 06:29:08

5

對這個「噩夢」(Dave的評論)的另一種解決方案是使用由審計觸發器填充的兩個審計表。您可以評估通過GUI創建觸發器和審計表的3rd party solution,然後檢查它是如何實際工作的。

Dislaimer:我作爲ApexSQL