本發(fā)明屬于數(shù)據(jù)恢復與電子取證領(lǐng)域,涉及數(shù)據(jù)庫的數(shù)據(jù)恢復與取證,尤其涉及一種查找和恢復SQL server數(shù)據(jù)庫中被修改記錄的方法。
背景技術(shù):
SQL Server是由Microsoft開發(fā)和推廣的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(DBMS),具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,可跨越從運行Microsoft Windows 98的膝上型電腦到運行Microsoft Windows 2012的大型多處理器的服務器等多種平臺使用,其最大的優(yōu)勢就是在于集成了Microsoft公司的各類產(chǎn)品及資源,提供了強大的可視化界面、高度集成的管理開發(fā)工具,在快速構(gòu)建商業(yè)智能(BI)方面頗有建樹。SQL Server是Microsoft公司在軟件集成方案中的重要一環(huán),在面向中小企業(yè)的數(shù)據(jù)庫應用中具有廣泛的基礎(chǔ)和重要的地位。
但是,由于沒有及時備份SQL Server數(shù)據(jù)庫的數(shù)據(jù),用戶各種誤操作而修改了數(shù)據(jù)庫的數(shù)據(jù)后,想要恢復被修改的數(shù)據(jù)就變得比較困難。另一方面,由于操作者故意修改SQL Server數(shù)據(jù)庫的數(shù)據(jù),想要查找被修改的數(shù)據(jù)并取得確鑿的證據(jù)也是比較困難的。
技術(shù)實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)的不足和上述問題,提出一種查找和恢復SQL server數(shù)據(jù)庫中被修改記錄的方法,將被修改的數(shù)據(jù)庫文件底層的解析結(jié)果與日志文件底層的解析結(jié)果進行對比,查找并恢復被修改的數(shù)據(jù),所述方法包括以下步驟:
S1:查找并打開被修改的數(shù)據(jù)庫文件,所述被修改的數(shù)據(jù)庫文件打開后為十六進制文件;
S2:解析所述被修改的數(shù)據(jù)庫文件中的一個或多個記錄,每一記錄由多個字段組成,每一所述記錄順序地包括記錄特征頭、第一字段、字段間隔標識、第二字段、字段間隔標識、……,、字段間隔標識、第n字段,其中,n為大于零的自然數(shù);
S3:查找并打開所述被修改的數(shù)據(jù)庫文件所對應的日志文件,所述日志文件打開后為十六進制文件;
S4:解析所述日志文件中的一個或多個記錄,每一記錄由多個字段組成,每一所述記錄順序地包括記錄特征頭、第一字段、字段間隔標識、第二字段、字段間隔標識、……,、字段間隔標識、第n字段,其中,n為大于零的自然數(shù);
S5:將所述被修改的數(shù)據(jù)庫文件的解析結(jié)果與所述日志文件的解析結(jié)果進行對比,查找并恢復被修改的數(shù)據(jù)。
作為優(yōu)選,所述被修改的數(shù)據(jù)庫文件為后綴mdf的文件,所述日志文件為后綴ldf的文件。
作為優(yōu)選,所述被修改的數(shù)據(jù)庫文件中的記錄與所述日志文件中的記錄具有相同的數(shù)據(jù)結(jié)構(gòu),不同之處在于,所述日志文件中的記錄之間具有長度不等的填充數(shù)據(jù),而所述被修改的數(shù)據(jù)庫文件中的記錄之間無填充數(shù)據(jù)。
作為優(yōu)選,所述步驟S2中,解析所述被修改的數(shù)據(jù)庫文件中的一個或多個記錄包括以下步驟:
S201:查找所述記錄特征頭:每一所述記錄前四個字節(jié)為所述記錄特征頭,每一所述數(shù)據(jù)庫文件中的各個所述記錄特征頭均相同;
S202:查找所述字段及所述字段間隔標識:所述記錄特征頭后的一個或多個字節(jié)為所述第一字段,所述第一字段后連續(xù)11個字節(jié)為所述字段間隔標識,所述連續(xù)11個字節(jié)為000000000200000100xxxx,其中,xxxx為2字節(jié)的任意十六進制數(shù);所述字段間隔標識后為第二字段,各字段間均具有所述字段間隔標識,且各字段間依此格式循環(huán)。
作為優(yōu)選,所述步驟S4中,解析所述日志文件中的一個或多個記錄包括以下步驟:
S401:查找所述記錄特征頭:每一所述記錄前四個字節(jié)為所述記錄特征頭,每一所述日志文件中的各個所述記錄特征頭均相同;
S402:查找所述字段及所述字段間隔標識:所述記錄特征頭后的一個或多個字節(jié)為所述第一字段,所述第一字段后連續(xù)11個字節(jié)為所述字段間隔標識,所述連續(xù)11個字節(jié)為000000000200000100xxxx,其中,xxxx為2字節(jié)的任意十六進制數(shù);所述字段間隔標識后為第二字段,各字段間均具有所述字段間隔標識,且各字段間依此格式循環(huán)。
作為優(yōu)選,所述被修改的數(shù)據(jù)庫文件中的所述記錄特征頭與所對應的所述日志文件中的所述記錄特征頭相同。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是可以恢復SQL Server數(shù)據(jù)庫被修改的數(shù)據(jù)及確定SQL Server數(shù)據(jù)庫的修改痕跡,對數(shù)據(jù)庫的恢復和取證具有有益的效果。
附圖說明
圖1為本發(fā)明的主流程圖。
圖2為本發(fā)明中解析被修改的數(shù)據(jù)庫文件的處理流程圖。
圖3為本發(fā)明中解析日志文件的處理流程圖。
圖4為本發(fā)明中被修改的數(shù)據(jù)庫文件的數(shù)據(jù)結(jié)構(gòu)圖。
圖5為本發(fā)明中日志文件保存的原數(shù)據(jù)庫文件的數(shù)據(jù)結(jié)構(gòu)圖。
具體實施方式
下面結(jié)合附圖和實施例對本發(fā)明作進一步闡述。
如圖1所示,一種查找和恢復SQL server數(shù)據(jù)庫中被修改記錄的方法,包括以下步驟:
S1:查找并打開被修改的數(shù)據(jù)庫文件,該數(shù)據(jù)庫文件名的后綴為mdf,打開后為十六進制文件,如圖4中左側(cè)的十六進制數(shù)據(jù)所示;
S2:解析該數(shù)據(jù)庫文件中的一個或多個記錄,此實施例中,每一記錄由2個字段組成,每一記錄順序地包括記錄特征頭、第一字段、字段間隔標識、第二字段;步驟S2包括如圖2所示的以下步驟:
S201:查找記錄特征頭:每一記錄前四個字節(jié)為記錄特征頭,每一數(shù)據(jù)庫文件中的各個記錄特征頭均相同;如圖4所示,此實施例中,該記錄特征頭為30000C00,且每一記錄均由該記錄特征頭30000C00開始;
S202:查找字段及字段間隔標識:記錄特征頭后的一個或多個字節(jié)為第一字段,第一字段后連續(xù)11個字節(jié)為字段間隔標識,該連續(xù)11個字節(jié)為000000000200000100xxxx,其中,xxxx為2字節(jié)的任意十六進制數(shù);字段間隔標識后為第二字段,各字段間均具有字段間隔標識,且各字段間依此格式循環(huán);如圖4所示,此實施例中,第一字段為80A4BF07,表示金額為13000,后面是11字節(jié)的字段間隔標識0000000002000001001700,隨后的第二字段為CADFB2CB,表示項目為蔬菜,至此,第一條記錄結(jié)束。
同理,如圖4所示,下一記錄特征頭也為30000C00,第一字段為00EF1C0D,表示金額為22000,后面是11字節(jié)的字段間隔標識0000000002000001001900,隨后的第二字段為7A6875726F75,表示項目為zhurou,至此,第二條記錄結(jié)束。
S3:查找并打開該數(shù)據(jù)庫文件所對應的日志文件,該日志文件名的后綴為ldf,打開后為十六進制文件,如圖5中左側(cè)的十六進制數(shù)據(jù)所示;
S4:解析該日志文件中的一個或多個記錄,此實施例中,每一記錄由2個字段組成,每一記錄順序地包括記錄特征頭、第一字段、字段間隔標識、第二字段;步驟S4包括如圖3所示的以下步驟:
S401:查找記錄特征頭:每一記錄前四個字節(jié)為記錄特征頭,每一日志文件中的各個記錄特征頭均相同,且被修改的數(shù)據(jù)庫文件中的記錄特征頭與所對應的日志文件中的記錄特征頭相同,如圖5所示,此實施例中,該記錄特征頭同被修改的數(shù)據(jù)庫文件中的記錄特征頭一樣為30000C00,且每一記錄均由該記錄特征頭30000C00開始;
S401:查找字段及字段間隔標識:記錄特征頭后的一個或多個字節(jié)為第一字段,第一字段后連續(xù)11個字節(jié)為字段間隔標識,該連續(xù)11個字節(jié)為000000000200000100xxxx,其中,xxxx為2字節(jié)的任意十六進制數(shù);字段間隔標識后為第二字段,各字段間均具有字段間隔標識,且各字段間依此格式循環(huán);如圖5所示,此實施例中,第一字段為80D1F008,表示金額為15000,后面是11字節(jié)的字段間隔標識0000000002000001001700,隨后的第二字段為CADFB2CB,表示項目為蔬菜,至此,第一條記錄結(jié)束;隨后為各記錄之間長度不等的填充數(shù)據(jù)。
同理,如圖5所示,查找下一記錄特征頭也為30000C00,此實施例中,第一字段為80B2E60E,表示金額為25000,后面是11字節(jié)的字段間隔標識0000000002000001001900,隨后的第二字段為7A6875726F75,表示項目為zhurou,至此,第二條記錄結(jié)束。
S5:將被修改的數(shù)據(jù)庫文件的解析結(jié)果與日志文件的解析結(jié)果進行對比,查找并恢復被修改的數(shù)據(jù)。將如圖4所示的被修改的數(shù)據(jù)庫文件的解析結(jié)果和如圖5所示的日志文件的解析結(jié)果進行對比,可以查出蔬菜項目的金額由15000改為了13000,而zhurou項目的金額由25000改為了22000。
應當理解的是,本發(fā)明不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進或變換,所有這些改進和變換都應屬于本發(fā)明所附權(quán)利要求的保護范圍。