Log Explorer主要用於對MSSQLServer的事物分析和數據恢復。你能夠瀏覽日誌、導出數據、恢復被修改或者刪除的數據(包括執行過update,delete,drop和truncate語句的表格)。一旦因爲系統故障或者人爲因素致使數據丟失,它可以提供在線快速的數據恢復,最大程度上保證恢復期間的其餘事物不間斷執行。html
他能夠支持SQLServer7.0和SQLServer2000,提取標準數據庫的日誌文件或者備份文件中的信息。sql
其中提供兩個強大的工具:日誌分析瀏覽,對象恢復。具體功能以下:數據庫
LogExplore包含兩部分:服務器
服務器端代理是保存在SQLServer主機中的一個只讀存儲過程,他的做用是接受客戶端請求,讀取在線事物日誌塊並經過網絡傳給客戶端軟件,由客戶端軟件來讀取這些原始的數據塊來完成Log Explore所提供的全部功能。網絡
他依賴來的網絡協議包括:工具
此軟件是C/S模式,在MSSQL服務器上安裝服務端,客戶端能夠安裝在須要的地方。測試
雙擊Log Explore,出現的軟件界面.net
點擊左上框的Attach Log File,進入鏈接數據庫界面3d
注意:代理
選擇你須要查看的數據庫名,以及選擇是使用在線的日誌仍是使用備份的文件進行分析。
成功鏈接到數據庫後,會出現一個警告,按肯定。
Log Summary:
日誌文件的概要信息。
Load Analysis:
列出指定時間範圍內的一些事物,用戶和表載入的概要信息。
Filter Log Record:
日誌過濾設置。支持過濾條件包括:時間、操做類型、表、用戶、SPID、搜索深度、Dropped表項以及登陸設置和應用程序設置
Browse:
日誌瀏覽,核心模塊。
Export Log Records:
從日誌上導出數據而且恢復到SQL數據庫的表裏
從日誌上導出數據,保存爲xml、html或者字符分割文件
Recovery: Undo User Transactions :
容許撤銷一系列選中的事務,例如:撤銷因爲用戶或者應用錯誤致使數據的刪除或者修改。
Recovery: Redo User Transactions:
容許你重作一系列你選中的事務。
Salvage Dropped/Truncated Data:
容許你恢復部分或者全部的數據,對於一個被刪除或者truncate的表
Restore Table from Backup:
使用備份來恢復表數據
Run SQL Script:
容許你執行保存在腳本文件裏的SQL命令。
Exit:
退出Log Explorer
如圖,模擬數據被誤刪的狀況,測試環境是把test數據庫裏test表裏的2行數據進行刪除。
經過Log Explorer,查找數據刪除操做的事務日誌。如圖:咱們在View Log上看到剛纔對於test表的2個DELETE_ROWS的操做,也就是說name列中數據爲4和5的2行數據已經被刪除。
右鍵點擊要進行恢復操做的事務操做,選擇Undo Transaction
而後會出現一個回滾文件的保存框,此文本內容爲要進行恢復的SQL語句。
把Recovery1.sql文件的內容拷貝到查詢分析器裏執行,完成恢復的操做
SQLServer的每一個數據庫都包含事物日誌,它以文件的形式存儲,能夠記錄數據庫的任何變化。發生故障時SQLServer就是經過它來保證數據的完整性。
操做是數據庫中定義的"原子行爲",每一個操做都在日誌文件中保存爲一條記錄。它能夠是用戶直接輸入的SQL語句,好比標準的insert命令,日誌文件中便會記錄一條操做代碼來標誌這個insert操做。
事物是一系列操做組成的序列。他能夠理解爲直觀的不可分割的一筆業務,能夠執行成功或者失敗。典型的事物好比由應用程序發出的具備開啓-提交功能的一組SQL語句。不一樣的事物靠事物Id號(transaction ID)來區分,具備相同ID的事物記錄的日誌也相同。
在線事物日誌是指當前活動數據庫所用的日誌。能夠經過以下命令來肯定其對應文件:
Select * from SYSFILES
他的文件後綴名通常是.LDF
離線事物日誌是指非活動數據庫所用的日誌。當其數據庫處於關閉(ShutDown)才狀態下能夠進行復製備份操做。他的結果同在線事物日誌徹底相同。
備份文件是保存食物日誌備份的文件,一般管理員經過運行SQL語句或者企業管理器來生成該文件。備份文件的內部結構和事物日誌不一樣,他採用稱爲MTF的格式來保存數據。一個備份文件能夠包含一個日誌的多組備份,甚至包括多個數據庫的混合備份.
企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮"
強烈要求該項不要選中.不然SQLServer將以循環的方式來覆蓋先前的日誌記錄,將會致使LogExplore沒法恢復錯誤.
LogExplore容許你恢復應爲誤操做或者程序錯誤而致使的數據丟失或者更改.好比執行update\Delete語句時丟失了where子句,或者錯誤使用了Dts功能.
LogExplore不支持直接修改數據庫.他能夠生成事物的逆操做腳本.
若是log是delete table where ...的話,生成的文件代碼就是insert table ....
你能夠經過SQL查詢分析器,或者LogExplore的Run SQL Script功能來執行生成腳本.
Undo功能能夠逆操做一組指定的用戶事物。包括insert,delete和update,其侷限性以下:
Redo功能能夠再次運行一組指定事物。它能夠在如下狀況中用到:
丟失數據庫並且沒有任何備份文件。
一、Insert--Delete
二、Delete--Insert
三、Update
Column1 |
Column2 |
A |
B |
事物1
Column1 |
Column2 |
X |
B |
事物2
Column1 |
Column2 |
Z |
T |
你能夠只對事物1作逆操做
Column1 |
Column2 |
A |
T |
注意:若是你選中了‘Do not restore column values that have been changed by subsequent modifications‘項,只對事物1逆轉將不會產生任何結果。
執行Drop Table和Truncate Table命令雖然會被SQLServer記錄到日誌文件中,可是並不記錄被刪除的數據。你可使用LogExplore提供的功能來恢復這些數據。LogExplore提供兩種機制來恢復被Drop或者Truncate的數據。
一、若是你有備份文件能夠直接經過備份文件恢復。
二、經過LogExplore提供的方法來恢復。
當執行如上命令時,SQLServer會將保存數據的頁面放入空閒頁面列表中。若是此頁沒有被再次使用則將一直保存原始數據。恢復時,LogExplore將從空閒頁面列表中搜尋沒有被再次使用的頁面,而後生成一個SQL腳原本從這些頁面重組原始數據。LogExplore能夠肯定被刪掉的原始數據行,並在完成時顯示原始行數和實際恢復的行數,由此能夠判定是否所有恢復
轉自:https://blog.csdn.net/hch271510994/article/details/54091321