2011-09-29 214 views
1

背景 我有一個生產SQL Server 2005服務器,4個不同的應用程序連接並進行更改。 沒有外鍵,在某些情況下沒有主鍵。 不幸的是把所有東西都扔出去,從頭開始不是一種選擇。 所以我的解決方案是開始將每個應用程序遷移到服務層方法,以便只有一個應用程序直接連接到數據庫。SQL Server 2005審計

但是,在寫入服務層並將所有應用程序遷移之前,需要修復一些問題。

因此,而不是進行更改,並希望他們不破4級寫得很糟糕的應用程序中的任何一個(有沒有辦法快速測試所有功能)我的解決辦法是啓動審計數據庫

問題 我如何審計SQL Server 2005上每個用戶正在訪問/更新/調用哪些存儲過程,表,列和視圖。

我可以找出哪些表正在更新,但我不知道哪些列和由什麼用戶。 我也不知道某些表是否只能通過存儲過程/視圖訪問。

我知道SQL Server 2008具有更好的審計功能,但是如果我可以在不花錢的情況下做到這一點,那就太棒了。這就是說如果最好的解決方案是升級或購買也是一種選擇的軟件。

回答

2

查看SQL Server 2008的CDC feature。您不能在2005年直接使用它,但可以爲每個表編寫觸發器,以將所有數據更改記錄到新的審計表中。即您的數據庫中的每個表都有一個審計表,所有相同的列以及一些額外的列說明操作是什麼以及發生了什麼。

如果你的應用程序的性質,意味着你可以從CURRENT_USER和APP_NAME獲取用戶信息和/或應用信息(),你可以包括審覈表的信息了。

並檢查了this answer更多的善良。

+0

有人回來這個問題它是一個風滾草這麼久真的很感動。 –