天天看點

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
了解SQL Server

SQL Server 是Microsoft 公司推出的關系型資料庫管理系統,具有使用友善可伸縮性好與相關軟體內建程度高等優點,是一個可擴充的、高性能的、為分布式客戶機/伺服器計算所設計的資料庫管理系統,提供了基于事務的企業級資訊管理系統方案。

在許多案件驗證分析中,驗證人員常會遇到SQL Server資料庫資料删除的情況,本文将和大家分享一種通過日志備份恢複SQL Server資料庫删除資料的恢複方法,希望為您提供一定參考價值!

針對SQL Server資料庫資料恢複我們需要了解資料庫相關的操作模式,如:資料庫的備份方式、資料庫檔案的作用等,下面将具體介紹資料庫的備份及相關知識。

SQL Server資料庫的檔案介紹

SQL Server的每個資料庫一般是以兩個檔案存放的,

一個擴充名為mdf,是資料檔案;另一個擴充名為ldf,為日志檔案。

是以隻要定期複制這兩個檔案,就可以達到備份的效果。

主要資料檔案(擴充名.mdf是 primary data file 的縮寫)

主要資料檔案包含資料庫的啟動資訊,并指向資料庫中的其他檔案。使用者資料和對象可存儲在此檔案中,也可以存儲在次要資料檔案中。每個資料庫有一個主要資料檔案。主要資料檔案的建議檔案擴充名是 .mdf。

次要資料檔案 (擴充名.ndf是Secondary data files的縮寫)

次要資料檔案是可選的,由使用者定義并存儲使用者資料。通過将每個檔案放在不同的磁盤驅動器上,次要檔案可用于将資料分散到多個磁盤上。另外,如果資料庫超過了單個 Windows 檔案的最大大小,可以使用次要資料檔案,這樣資料庫就能繼續增長。

事務日志 (擴充名.ldf是Log data files的縮寫)

日志檔案儲存用于恢複資料庫的日志資訊。每個資料庫必須至少有一個日志檔案,存放對該資料庫的更新操作(增、删、改)。事務日志的建議檔案擴充名是 .ldf。

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
Ps:本文主要介紹通過「事務日志」還原SQL Server資料庫删除資料的相關内容。 SQL Server資料庫的備份介紹

SQL Server資料庫備份有兩種方式,

一種是使用資料庫管理軟體備份功能對資料庫備份,另外一種就是直接拷貝資料庫檔案mdf和日志檔案ldf的方式。 使用資料庫管理軟體備份功能備份

完整備份

差異備份

事務日志備份

檔案和檔案組備份

備份檔案介紹:

SQL Server 資料庫備份檔案擴充名通常是.bak,也可自定義擴充名。

直接拷貝資料庫檔案和日志檔案

此方式隻需要将資料庫從運作的伺服器種斷開或者把伺服器停掉,然後将資料庫脫機,就可以拷貝資料庫和日志檔案進行備份了。

備份檔案介紹:

此方式為直接拷貝檔案備份,是以備份檔案一般分兩種,一種是擴充名為.mdf的資料庫檔案,另一個是擴充名為.ldf的日志檔案。

SQL Server恢複模式介紹

Microsoft SQL Server提供了三種恢複模式,是資料庫的屬性。它們決定了哪些資料能被備份下來,是備份和還原政策的必要部分。

簡單恢複模式

主要使用于對資料庫資料安全要求不太高的資料庫,不備份日志,隻能還原到故障前最新的備份。是以使用此模式盡量将備份的時間間隔縮短,以避免故障丢失過多的資料。

完整恢複模式

可在最大程度避免出現故障時丢失資料,它包括資料庫備份和日志備份,可完整的記錄所有日志直到日志被備份時才會截斷日志。如果不單獨備份日志的情況下,日志的體積将不斷增加,是以此模式需要資料庫維護人員手動維護或者在維護模式設定自動備份,此模式可恢複到任意時間點。

大容量日志恢複模式

需要備份日志,是完整模式的附加模式。大容量日志恢複模式下,大多數的大容量操作(如如導入資料、批量更新、查詢插入資料等操作時)會以最小方式記錄下來,故部分事務不會被記錄下來,此模式可恢複到任何備份的結尾,但不支援時間點恢複。

恢複模式和備份模式關系
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
關于資料庫的日志備份驗證 事務日志驗證介紹

由于日志檔案能夠存放對該資料庫的操作(增、删、改等),是以我們可以在有較早資料庫完整備份的情況下(删除、破壞等操作之前),根據日志檔案記錄此期間的所有操作來復原操作來達到恢複資料的目的。

事務日志還原的前提

事務日志驗證的前提,是恢複模式設定為完整恢複模式。完整恢複模式可最大程度避免出現故障時丢失資料,它包括資料庫備份和日志備份,可完整的記錄所有日志直到日志被備份時才會截斷日志。

資料庫删除資料恢複思路 思考:

資料删除的情況下,拿到主機鏡像,怎樣找回資料?

分析:

1、考慮從資料庫源檔案及日志檔案中查找删除記錄;

2、資料庫檔案損壞考慮第三方軟體去修複掃描并還原資料;

3、資料庫正常工作情況下查詢日志操作記錄并使用日志恢複驗證。

資料庫删除資料具體驗證案例及操作步驟 案例介紹

在SQL Server資料庫中有名為test的資料庫,其中有兩張資料表,一張表中沒有資料,一張表中資料不完整,疑似有被删除的情況。

資料表内容如下↓↓↓

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
目的

查詢是否有做過删除資料操作,如果有,嘗試恢複出删除的資料内容。

前提

1、資料庫設定了完整恢複模式

2、有一個删除或者資料被破壞的完整備份

Ps:前提1、2滿足或者前提1滿足的情況下都能嘗試恢複資料,前提1不滿足則無法恢複。 思路分析

1、查詢原有日志檔案是否有删除資料記錄;

2、查詢是否完整恢複模式,是否有自動備份檔案;

3、能否通過日志檔案或者備份檔案找到删除資料内容。

驗證步驟

1、開啟螢幕錄像,将源資料盤進行完整鏡像完成資料固定;

2、加載鏡像掃描提取源資料庫及日志檔案;

3、使用工具掃描日志檔案中的操作記錄恢複驗證;

4、步驟3無資料情況下,仿真運作鏡像查找備份曆史記錄找到備份檔案;

5、通過備份還原進行具體時間點的恢複驗證。

具體案例操作步驟

接下來,我們将介紹兩種日志恢複驗證的方法。

方法一 通過SysTools SQL Log Analyzer查找進行恢複資料 準備:

SysTools SQL Log Analyzer,test.mdf,test_log.ldf(用于讀取和分析SQL Server日志檔案(.ldf)事務的SQL LDF檢視器工具。将資料庫的mdf和ldf檔案拷貝出來,用此工具加載檢視删除資料。)

步驟如下↓↓↓

01.加載ldf檔案
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
02.掃描日志檔案完成
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
03.發現删除的資料
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
方法1簡單實用,但是,在遇到ldf檔案被删除或者ldf被破壞等情況時,方法1就顯得不太可行了。 掃描結果如下,共找到0條記錄檔。
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...

至此,我們需要第二種方式進行日志恢複驗證。

方法二 通過恢複日志(指定時間點恢複)來恢複資料 準備

SQL Server Management Studio,完整備份檔案,事務日志備份檔案,大緻資料删除或者資料破壞時間點。

01.查詢是否有自動備份檔案(已仿真情況下)

1)打開SQL Server Management Studio(資料庫管理工具),找到并點選左上方的【建立查詢】,在彈出的視窗中輸入「查詢曆史備份記錄」指令,檢視是否有備份記錄。查詢結果顯示,存在完整備份和事務日志備份,如下圖。

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
查詢曆史備份記錄指令

SELECT

bs.database_name,

bs.name AS backupset_name,

bs.backup_size,

bmf.physical_device_name,

CASE bs.type

WHEN 'D' THEN '完整備份'

WHEN 'I' THEN '差異備份'

WHEN 'L' THEN '日志備份'

END AS backup_type,

bs.backup_finish_date

FROM msdb.dbo.backupmediafamily bmf

INNER JOIN msdb.dbo.backupset bs

ON bmf.media_set_id=bs.media_set_id

WHERE bs.backup_start_date>DATEADD(DAY,-1,GETDATE())

ORDER BY bs.backup_finish_date

2)根據結果中路徑指向,找到備份檔案:backup.bak

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
02.日志備份恢複驗證

1)分離原有資料庫,拷貝備份,然後進行資料恢複驗證。

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...

2)建立test,選擇資料庫右鍵還原,選擇具體的時間點,點選還原。至此,删除資料被恢複,恢複結束。

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...

還原完成後的資料如下。至此,日志還原驗證完成。

sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
sqlserver 格林威治時間轉正常_【效率源實戰】如何通過日志備份恢複SQL Server資料庫删除資料?...
注意事項

1、文中所有代碼都通過SQL Server Management Studio中「建立查詢」後「執行」完成操作;

2、恢複資料的前提一定恢複模式設定為完整模式;

3、日志恢複驗證的前提是有一個删除資料前的完整備份檔案和日志備份檔案;

4、SQL Server用戶端備份恢複向下相容,盡量用同版本程式還原。

本文主要介紹通過日志備份還原SQL Server資料庫删除資料的相關案例實操,如對文中的操作、描述有任何疑問,或者有相關資料庫案件協助支援也可以直接在微信公衆号背景給我們留言。