2013-05-17 22 views
0

我有一個要求記錄表中的所有更改。我在數據審計日誌中閱讀過很多文章。對我來說似乎都很複雜。簡單的sql數據審計日誌表

我打算在更新和刪除數據之前保留所有表的副本。這是一個好主意嗎?

+0

除了您或您的用戶/客戶,沒有人能說出什麼是「好主意」。這裏的業務要求是什麼?如果你在一個合法控制的環境中工作,在這個環境中你需要對每一個改變進行完整的審計跟蹤,那麼也許你需要爲每張桌子設置它,即使它工作更多。但也許這個要求只是跟蹤一個或兩個特定的表格,而且你可以做一些簡單的事情。如果你可以讓你的問題更加精確和技術性,你可能會得到更好的迴應。 – Pondlife

回答

1

如果我們只談論一張桌子,那麼是的。如果有幾個表,那麼也許。如果有很多表需要審計,那麼不需要。

原因是您必須維護更多複製表的原因是它變得越複雜。此外,從許多表格報告可能變成一項艱鉅的任務。

這裏有一些其他的想法:

兩個表的設計存儲:做是爲了保持有關交易的細節在一個表(用戶,主機,交易時間,表名,數據庫名稱等),第二表中的數據更改(舊值,鍵等)

第三方工具:有幾種工具可以提供不同級別的審計。 ApexSQL Audit是一個基於觸發器的審計工具,ApexSQL Log更高級,可以審計權限和模式更改,Idera的Compliance manager是最先進的,甚至可以捕獲select語句。

更改數據捕獲:這是內置於SQL Server 2008+,但僅限於企業版本。

+0

是的。它不是一張桌子。我計劃使用觸發器將更改和刪除的數據(整行)存儲到每個表的審計表中。所有的審計表都在同一個數據庫中。如果我使用CDC,很容易就能顯示一行數據的兩個版本之間的變化報告?在我的方法中,很容易顯示一行數據的兩個版本之間的差異,因爲整行可用... – zak

+0

這將是非常簡單的,因爲內置了顯示此信息的系統函數,您也可以使用CDC模式查詢審計表。有關更多信息,請參見[this](https://www.simple-talk.com/sql/learn-sql-server/introduction-to-change-data-capture-(cdc)-in-sql-server-2008 /)。細節。 – Dwoolk

+0

Renhold Software的[SQL Table Audit](https://renholdsoftware.com/SQLTableAudit)是另一個價格相對較低的第三方替代品。它通過生成觸發器來工作。 – rpearsondev

0

爲了解數據庫中每個表中所做的更改,我相信您應該使用LepideAuditor for SQL Server。通過此工具,您可以跟蹤有關在數據庫和SQL Server對象上執行的創建,更改,刪除活動的更改。 它詳細介紹了在這些對象上進行的所有操作的人員,時間和地點。

0

如果您打算保留表格的副本,我建議您查看數據庫快照。它將幫助您創建數據庫的只讀副本,並且可以輕鬆地還原表格並將其與快照進行比較。

關於SQL審計,開始時創建起來有點困難,但一旦您有一個工作,第二個審計將需要幾分鐘時間才能實施。

SQL Audit對於少數表格來說是一個不錯的選擇。如果您有多個,請使用更改數據捕獲或第三方工具,如Lepide或apexsql觸發器。