轉:Log Explorer使用說明恢復被誤刪除的數據

1、介紹

Log Explorer主要用於對MSSQLServer的事物分析和數據恢復。你能夠瀏覽日誌、導出數據、恢復被修改或者刪除的數據(包括執行過update,delete,drop和truncate語句的表格)。一旦因爲系統故障或者人爲因素致使數據丟失,它可以提供在線快速的數據恢復,最大程度上保證恢復期間的其餘事物不間斷執行。html

他能夠支持SQLServer7.0和SQLServer2000,提取標準數據庫的日誌文件或者備份文件中的信息。sql

 

其中提供兩個強大的工具:日誌分析瀏覽,對象恢復。具體功能以下:數據庫

  • 日誌文件瀏覽
  • 數據庫變動審查
  • 計劃和受權變動審查
  • 將日誌記錄導出到文件或者數據庫表
  • 實時監控數據庫事物
  • 計算並統計負荷
  • 經過有選擇性的取消或者重作事物來恢復數據
  • 恢復被截斷或者刪除表中的數據
  • 運行SQL腳本


2、安裝

LogExplore包含兩部分:服務器

  • 客戶端軟件
  • 服務器代理

 bubuko.com,布布扣

 

服務器端代理是保存在SQLServer主機中的一個只讀存儲過程,他的做用是接受客戶端請求,讀取在線事物日誌塊並經過網絡傳給客戶端軟件,由客戶端軟件來讀取這些原始的數據塊來完成Log Explore所提供的全部功能。網絡

他依賴來的網絡協議包括:工具

  • Named Pipe:局域網中適用
  • Tcp/Ip:廣域網中適用

 

此軟件是C/S模式,在MSSQL服務器上安裝服務端,客戶端能夠安裝在須要的地方。測試

 

3、使用說明

3.1鏈接數據庫

雙擊Log Explore,出現的軟件界面.net

 bubuko.com,布布扣

 

點擊左上框的Attach Log File,進入鏈接數據庫界面3d

bubuko.com,布布扣 

注意:代理

 

 

選擇你須要查看的數據庫名,以及選擇是使用在線的日誌仍是使用備份的文件進行分析。

 bubuko.com,布布扣

成功鏈接到數據庫後,會出現一個警告,按肯定。

 bubuko.com,布布扣

3.2功能說明

 bubuko.com,布布扣

 

Log Summary:

日誌文件的概要信息。

 

Load Analysis:

列出指定時間範圍內的一些事物,用戶和表載入的概要信息。

 

Filter Log Record:

日誌過濾設置。支持過濾條件包括:時間、操做類型、表、用戶、SPID、搜索深度、Dropped表項以及登陸設置和應用程序設置

 

Browse:

日誌瀏覽,核心模塊。

 

  • View Log功能:
    列表如圖,能夠用TransID來區分事物並用不一樣顏色標識。工具欄的按鈕是一些基本查詢操做。鼠標右鍵彈出菜單中有Undo Transaction和UndoOperation能夠恢復黑色箭頭選中的事物或者操做項。
  • Real-Time Monitor:
    實時監控事物日誌,經過輪詢來實現。能夠暫停或者中止監控,能夠更改輪詢週期。
  • 相關DML語言和DDL語言能夠在Row Revision History、Row Transaction History以及View DDL Commands來查詢。

Export Log Records:

  • Export to SQL

從日誌上導出數據而且恢復到SQL數據庫的表裏

  • Export to Files

   從日誌上導出數據,保存爲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

 

4、數據恢復例子

4.1數據誤刪

如圖,模擬數據被誤刪的狀況,測試環境是把test數據庫裏test表裏的2行數據進行刪除。

 

 bubuko.com,布布扣

4.2事務查找

經過Log Explorer,查找數據刪除操做的事務日誌。如圖:咱們在View Log上看到剛纔對於test表的2個DELETE_ROWS的操做,也就是說name列中數據爲4和5的2行數據已經被刪除。

 bubuko.com,布布扣

4.3數據恢復

右鍵點擊要進行恢復操做的事務操做,選擇Undo Transaction

 bubuko.com,布布扣

而後會出現一個回滾文件的保存框,此文本內容爲要進行恢復的SQL語句。

 bubuko.com,布布扣

把Recovery1.sql文件的內容拷貝到查詢分析器裏執行,完成恢復的操做

 bubuko.com,布布扣

5、數據庫相關介紹

5.1事物日誌(Transaction Log)

 

SQLServer的每一個數據庫都包含事物日誌,它以文件的形式存儲,能夠記錄數據庫的任何變化。發生故障時SQLServer就是經過它來保證數據的完整性。

 

5.2操做(Operation)

操做是數據庫中定義的"原子行爲",每一個操做都在日誌文件中保存爲一條記錄。它能夠是用戶直接輸入的SQL語句,好比標準的insert命令,日誌文件中便會記錄一條操做代碼來標誌這個insert操做。

 

5.3事物(Transaction)

事物是一系列操做組成的序列。他能夠理解爲直觀的不可分割的一筆業務,能夠執行成功或者失敗。典型的事物好比由應用程序發出的具備開啓-提交功能的一組SQL語句。不一樣的事物靠事物Id號(transaction ID)來區分,具備相同ID的事物記錄的日誌也相同。

 

5.4在線事物日誌(Online Transaction Log)

在線事物日誌是指當前活動數據庫所用的日誌。能夠經過以下命令來肯定其對應文件:

Select * from SYSFILES

他的文件後綴名通常是.LDF

 

5.5離線事物日誌(Offline Transaction Log)

離線事物日誌是指非活動數據庫所用的日誌。當其數據庫處於關閉(ShutDown)才狀態下能夠進行復製備份操做。他的結果同在線事物日誌徹底相同。

 

5.6備份文件

備份文件是保存食物日誌備份的文件,一般管理員經過運行SQL語句或者企業管理器來生成該文件。備份文件的內部結構和事物日誌不一樣,他採用稱爲MTF的格式來保存數據。一個備份文件能夠包含一個日誌的多組備份,甚至包括多個數據庫的混合備份.

 

5.7設置爲自動收縮

企業管理器--服務器--右鍵數據庫--屬性--選項--選擇"自動收縮"

強烈要求該項不要選中.不然SQLServer將以循環的方式來覆蓋先前的日誌記錄,將會致使LogExplore沒法恢復錯誤.

 

 

5.8數據恢復介紹

LogExplore容許你恢復應爲誤操做或者程序錯誤而致使的數據丟失或者更改.好比執行update\Delete語句時丟失了where子句,或者錯誤使用了Dts功能.

LogExplore不支持直接修改數據庫.他能夠生成事物的逆操做腳本.

若是log是delete table where ...的話,生成的文件代碼就是insert table ....

你能夠經過SQL查詢分析器,或者LogExplore的Run SQL Script功能來執行生成腳本.

 

5.9關於Undo

Undo功能能夠逆操做一組指定的用戶事物。包括insert,delete和update,其侷限性以下:

  • 事物類別:LogExplore只能undo用戶事物。用戶事物是指在用戶表上定義的事物,不支持系統表的更新恢復。同時,他也不支持計劃變動的回滾。
  • Blob類型:包括text,ntext,image類型。LogExplore只支持這些類型的insert和delete恢復,不支持update語句恢復。

 

5.10關於redo

Redo功能能夠再次運行一組指定事物。它能夠在如下狀況中用到:

丟失數據庫並且沒有任何備份文件。

  • 若是原始日誌文件沒有丟失能夠經過Redo來實現恢復。
  • 經過完整備份文件來把數據庫恢復到某指定時間點,再經過redo功能完整恢復。它能夠重放Create Table和Create Index命令,來從新生成被刪掉的表,同時也受blob字段的限制。

 

5.11 SQL逆操做

一、Insert--Delete

二、Delete--Insert

三、Update

 

Column1 

Column2 

B

事物1

Column1 

Column2 

X

B

事物2

Column1 

Column2 

Z

T

你能夠只對事物1作逆操做

Column1 

Column2 

T

   

注意:若是你選中了‘Do not restore column values that have been changed by subsequent modifications‘項,只對事物1逆轉將不會產生任何結果。

5.12拯救Dropped/Truncate命令致使的數據丟失

執行Drop Table和Truncate Table命令雖然會被SQLServer記錄到日誌文件中,可是並不記錄被刪除的數據。你可使用LogExplore提供的功能來恢復這些數據。LogExplore提供兩種機制來恢復被Drop或者Truncate的數據。

一、若是你有備份文件能夠直接經過備份文件恢復。

二、經過LogExplore提供的方法來恢復。

當執行如上命令時,SQLServer會將保存數據的頁面放入空閒頁面列表中。若是此頁沒有被再次使用則將一直保存原始數據。恢復時,LogExplore將從空閒頁面列表中搜尋沒有被再次使用的頁面,而後生成一個SQL腳原本從這些頁面重組原始數據。LogExplore能夠肯定被刪掉的原始數據行,並在完成時顯示原始行數和實際恢復的行數,由此能夠判定是否所有恢復

轉自:https://blog.csdn.net/hch271510994/article/details/54091321

相關文章
相關標籤/搜索