問題:同事想要知道資料庫何時進行新增、更新與刪除的動作,而我們的資料庫沒有設定CDC等機制..,所以只好從log檔下手了。
解決方法:使用fn_dblog function去讀取sql server的log檔,藉由讀取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的過程有點複雜,最好還是使用CDC或SNAPSHOT會比較方便,另外使用DBCC LOG也可以看LOG檔。
沒有留言:
張貼留言