我們可以自己用開發工具來實現sql日誌的讀取,這個應用還是很酷的,具體思路
1、首先要了解乙個沒有公開的系統函式::fn_dblog,他可以讀取sql日誌,並返回二進位制的行資料
2、然後要了解sql的二進位制資料是如何儲存的,這個可以參考我的blog文章
3、用自己擅長的開發工具來分析資料,得到我們需要的資訊
我用c#寫了乙個測試樣例,分析了int,char,datetime和varchar的日誌情況而且沒有考慮null和空字串的儲存,希望感興趣的朋友能和我一起交流打造屬於自己的日誌分析工具
詳細的試驗步驟以及**如下:
1、首先建立sqlserver的測試環境,我用的sql2005,這個過程不能保證在之前的版本中執行
以下sql語句會建立乙個dblogtest資料庫,並建立一張log_test表,然後插入3條資料之後把錶清空
1.use master
2.go
3.create database dblogtest
4.go
5.use dblogtest
6.go
7.create table log_test(id int ,code char(10),name varchar(20),date datetime,memo varchar(100))
8.insert into log_test select 100, 'id001','jinjazz',getdate(),'剪刀'
9.insert into log_test select 65549,'id002','遊客',getdate()-1,'這傢伙很懶,沒有設定暱稱'
10.insert into log_test select -999,'id003','這傢伙來自火星',getdate()-1000,'a'
11.12.delete from log_test
13.14.--use master
15.--go
16.--drop database dblogtest
17.
2、我們最終的目的是要找到被我們刪掉的資料
3、分析日誌的c#**:我已經盡量詳細的寫了注釋
13. ///
14. ///
15. static void main(string args)
16. ;
39. //迴圈讀取日誌
40. while (reader.read())
41. 的操作:", reader["operation"], reader["allocunitname"]);
49. foreach (datacolumn c in columns)
50. = ", c.name, c.value);
52. }
53. console.writeline();
54. }
55. catch
56.
59.
60. }
61. reader.close();
62. }
63. conn.close();
64. }
65. console.writeline("************************日誌分析完成");
66. console.readline();
67. }
68. //自定義的column結構
69. public class datacolumn
70.
80. public datacolumn(string name,system.data.sqldbtype type,short length)
81.
86. }
87. ///
88. /// sql二進位制結構翻譯,這個比較關鍵,測試環境為sql2005,其他版本沒有測過。
89. ///
90. ///
91. ///
1.資料物件dbo.log_test的lop_insert_rows操作:
2.id = 100
3.code = id001
4.name = jinjazz
5.date = 2008-8-7 18:14:03
6.memo = 剪刀
7.8.資料物件dbo.log_test的lop_insert_rows操作:
9.id = 65549
10.code = id002
11.name = 遊客
12.date = 2008-8-6 18:14:03
13.memo = 這傢伙很懶,沒有設定暱稱
14.15.資料物件dbo.log_test的lop_insert_rows操作:
16.id = -999
17.code = id003
18.name = 這傢伙來自火星
19.date = 2005-11-11 18:14:03
20.memo = a
21.22.資料物件dbo.log_test的lop_delete_rows操作:
23.id = 100
24.code = id001
25.name = jinjazz
26.date = 2008-8-7 18:14:03
27.memo = 剪刀
28.29.資料物件dbo.log_test的lop_delete_rows操作:
30.id = 65549
31.code = id002
32.name = 遊客
33.date = 2008-8-6 18:14:03
34.memo = 這傢伙很懶,沒有設定暱稱
35.36.資料物件dbo.log_test的lop_delete_rows操作:
37.id = -999
38.code = id003
39.name = 這傢伙來自火星
40.date = 2005-11-11 18:14:03
41.memo = a
42.43.************************日誌分析完成
44.試驗成功~~
用c 讀取並分析sql2005日誌
我們可以自己用開發工具來實現sql日誌的讀取,這個應用還是很酷的,具體思路 1 首先要了解乙個沒有公開的系統函式 fn dblog,他可以讀取sql日誌,並返回二進位制的行資料 2 然後要了解sql的二進位制資料是如何儲存的,這個可以參考我的blog文章 3 用自己擅長的開發工具來分析資料,得到我們...
用c 讀取並分析sql2005日誌
用過logexplorer的朋友都會被他強悍的功能吸引,我寫過一篇詳細的操作文件可以參考 我們可以自己用開發工具來實現sql日誌的讀取,這個應用還是很酷的,具體思路 1 首先要了解乙個沒有公開的系統函式 fn dblog,他可以讀取sql日誌,並返回二進位制的行資料 3 用自己擅長的開發工具來分析資...
用c 讀取並分析sql2005日誌
用過logexplorer的朋友都會被他強悍的功能吸引,我寫過一篇詳細的操作文件可以參考 我們可以自己用開發工具來實現sql日誌的讀取,這個應用還是很酷的,具體思路 1 首先要了解乙個沒有公開的系統函式 fn dblog,他可以讀取sql日誌,並返回二進位制的行資料 3 用自己擅長的開發工具來分析資...