2011年8月24日 星期三

使用fn_dblog讀取資料庫的LOG檔


問題:同事想要知道資料庫何時進行新增、更新與刪除的動作,而我們的資料庫沒有設定CDC等機制..,所以只好從log檔下手了。


解決方法:使用fn_dblog function去讀取sql serverlog檔,藉由讀取log檔可以知道資料庫何時做新增和更新資料的動作。

步驟:
1.新增資料到table後,使用fn_dblog讀取新增資料的TransactionID

2.找出新增的TransactionID後,利用TransactionID查詢新增資料的Transaction行為,由下圖可以知道資料庫何時對TestDBLogTable進行新增資料的動作。

3.更新資料後,使用fn_dblog讀取更新資料的TransactionID。

4.找出更新資料的TransactionID後,利用TransactionID查詢更新資料的Transaction行為,由下圖可以知道資料庫何時對TestDBLogTable進行更新資料的動作。

5.刪除資料後,使用fn_dblog讀取刪除資料的TransactionID

6. 找出刪除資料的TransactionID後,利用TransactionID查詢刪除資料的Transaction行為,由下圖可以知道資料庫何時對TestDBLogTable進行刪除資料的動作。


結論:使用fn_dblog function去讀取只能讀到DML的做作與時間相關資料,如果要知道改變的內容需要把BINARY的資料轉成STRING,不過轉成STRING的過程有點複雜,最好還是使用CDCSNAPSHOT會比較方便,另外使用DBCC LOG也可以看LOG檔。






沒有留言:

張貼留言