如何在 SQL Server 中恢復已刪除的表記錄

概括:本博客介紹瞭。它演示了一個使用日誌序列號 (LSN) 從 SQL 表中檢索已刪除記錄的示例。它還探索了用於 MS SQL 軟件的 Stellar Repair 以快速恢復已刪除的記錄,而不會丟失任何數據。

如果您不小心對帶有錯誤 WHERE 子句的表執行了 DROP 或 DELETE 命令並丟失了重要記錄,您可以使用以下任何一種方法來恢復它們。

筆記:截斷操作無法恢復。只有刪除操作可以恢復。

內容

  • 在 SQL Server 中恢復已刪除表記錄的方法
  • 方法 2 – 使用 SQL 恢復軟件

在 SQL Server 中恢復已刪除表記錄的方法

方法 1 – 使用日誌序列號 (LSN)

筆記:如果事務日誌備份損壞或丟失,此方法將不起作用。在這種情況下,請跳到下一個方法。

每個 SQL Server 事務日誌記錄由一個日誌序列號 (LSN) 唯一標識。您可以使用發生重大事件的日誌記錄的 LSN 來構建恢復序列。

讓我們通過一個例子來了解如何使用日誌序列號方法來恢復已刪除的表記錄。在這個例子中——我們將創建一個數據庫和一個表,向表中插入行,刪除一些行,獲取有關已刪除數據的信息,並恢復數據。

使用 LSN 從 SQL 表中恢復已刪除記錄的步驟

在本節中,我們將創建一個測試數據庫和一個我們將在其上運行 DELETE 操作的表。然後,我們將找到已刪除的數據並使用 LSN 將其恢復。

第1步:創建數據庫

執行以下查詢以創建名為“RecoverDeletedRecords”的數據庫和名為“Employee”的表:

使用[主];

創建數據庫 RecoverDeletedRecords;

使用 RecoverDeletedRecords;

創建表 [員工] (

[Sr.No] INT 身份,

[日期] DATETIME 默認 GETDATE (),

[城市] CHAR (25) 默認‘City1’);

圖 1 – 在 SSMS 中創建數據庫

第2步:將數據插入表中

我們創建了一個名為“RecoverDeletedRecords”的表和一個包含三列的表“Employee”。現在,我們將通過運行以下查詢將行插入到表中:

使用 RecoverDeletedRecords;

插入員工默認值;

去 100

圖 2 – 將記錄插入新表

第 3 步:從表中刪除行

現在讓我們通過執行以下命令刪除一些行:

使用 RecoverDeletedRecords

刪除員工

其中 [Sr.No] < 10

從員工中選擇 *

圖 3 – 刪除表格行

如上圖所示,所有 Sr.不小於 10 的行都已從“Employee”表中刪除。

第4步:獲取有關已刪除行的信息

接下來,我們將通過搜索事務日誌來獲取有關已刪除行的信息:

使用 RecoverDeletedRecords

選擇

[當前 LSN],

[交易ID],

手術,

語境,

分配單元名稱

fn_dblog(空,空)

在哪裡

操作 = ‘LOP_DELETE_ROWS’

圖 4 – 已刪除行的事務 ID

獲取已刪除行的事務 ID 後,我們必須找到這些行被刪除的時間。

第 5 步:獲取 LOP_BEGIN_XACT 日誌記錄的日誌序列號

要找到刪除行的確切時間,我們必須使用事務 ID 來獲取事務的 LOP_BEGIN_XACT 日誌記錄的 LSN:

使用 RecoverDeletedRecords

選擇

[當前 LSN],

手術,

[交易ID],

[開始時間],

[交易名稱],

[交易SID]

fn_dblog(空,空)

在哪裡

[交易 ID] = ‘0000:0000020e’

[操作] = ‘LOP_BEGIN_XACT’

圖 5 – 交易日誌的當前 LSN

在上面的屏幕截圖中,我們可以看到事務的當前 LSN 以及詳細信息,例如當使用 LSN '00000014:0000001a:0001' 執行 DELETE 語句時的時間'2021/03/15 19:36:59:337'事務 ID '0000:0000020e'。要恢復已刪除的 SQL 數據庫表數據,請繼續執行下一步。

第 6 步:在 SQL Server 中恢復已刪除的記錄

要恢復已刪除的 SQL 表記錄,我們需要將 LSN 值從十六進制轉換為十進制形式。為此,請在日誌序列號前添加“0x”,如下面的代碼所示:

– 使用 norecovery 恢復完整備份。

恢復數據庫 RecoverDeletedRecords_COPY

從磁盤 = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.bak'

將“RecoverDeletedRecords”移動到“C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.mdf”,

將“RecoverDeletedRecords_log”移動到“C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.ldf”,

更換,無恢復;

– 使用 STOPBEFOREMARK 選項恢復日誌備份以恢復準確的 LSN。

恢復日誌 RecoverDeletedRecords_COPY

磁盤 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords_tlogbackup.trn'

STOPBEFOREMARK = 'lsn:0x00000014:0000001a:0001'

圖 6 – 恢復已刪除的記錄

現在您的數據已恢復,請檢查已刪除的記錄是否已恢復。為此,運行以下查詢以查看表中被刪除的前十行(在上面的步驟 3 中)。

使用 RecoverDeletedRecords_COPY

從員工中選擇 *

如果刪除的表記錄還沒有恢復,可以嘗試使用 Stellar Repair for MS SQL 等 SQL 恢復工具來找回刪除的數據。

筆記:在上面的代碼中,將路徑“C:\Program Files\Microsoft SQL Server\MSSQL10_50.STELLAR\MSSQL\Backup\RecoverDeletedRecords.bak”替換為備份文件所在的路徑。此外,將 .mdf 和 .ldf 文件的路徑替換為您保存數據庫文件的路徑。

方法 2 – 使用 SQL 恢復軟件

Stellar® 的 SQL 恢復軟件可以幫助您通過幾個簡單的步驟恢復 SQL Server 數據庫中所有已刪除的記錄。除了已刪除的數據,該軟件還可以恢復所有其他對象,如視圖、觸發器、存儲過程等,同時保持數據完整性。

在我們繼續之前

在使用軟件恢復記錄之前,請確保您的系統滿足以下先決條件:

  • 首先,您需要安裝 SQL Server。您可以使用安裝在 Windows 中的任何 SQL Server。
  • 其次,確保您已安裝 SQL Server Management Studio (SSMS)
  • MS SQL 軟件的 Stellar Repair

使用 Stellar Repair for MS SQL 恢復已刪除表記錄的步驟

下載 SQL 恢復軟件的演示版以恢復已刪除的行或損壞的數據庫:

  • 啟動 MS SQL 軟件的 Stellar Repair。軟件主界面打開,並顯示停止 SQL Server 數據庫並在不同位置創建副本的指令。按確定。

圖 7 – MS SQL 主界面的 Stellar 修復

  • 瀏覽要修復的 SQL 數據庫 MDF 文件。如果您不知道 MDF 文件的位置,請單擊搜索以查找並選擇該文件:

圖 8 – 在軟件中選擇數據庫 MDF 文件

筆記:如果您不知道數據庫的位置,您可以在 SSMS 的數據庫屬性中的數據文件頁面中找到它(請參閱下圖)。

圖 9 – 檢查 SSMS 中的數據庫位置

  • 選擇數據庫文件後,選擇包括已刪除記錄選項,然後單擊修復。

圖 10 – 包括已刪除記錄選項

  • 軟件提示選擇合適的掃描模式來修復數據庫文件。選擇“標準掃描”或“高級掃描”,然後單擊“確定”。

圖 11 – 選擇掃描模式

  • 當“修復完成”消息框打開時,單擊確定。

圖 12 – 修復完成消息框

  • 該軟件顯示可恢復表記錄的預覽。它還恢復其他數據庫對象,如視圖、同義詞、存儲過程、函數、規則、默認值、數據類型、觸發器、序列和程序集。該軟件還顯示一個日誌報告,其中包含數據庫大小、排序規則、mdf 文件的路徑以及表和對象列表等信息。

圖 13 – 日誌報告

  • 接下來,單擊文件菜單上的保存以保存恢復的數據。

圖 14 – 保存數據庫

  • 在“保存數據庫”對話框中,您可以選擇將恢復的數據保存為 MDF、CSV、HTML 或 XLS (Excel) 文件格式。在本例中,我們將選擇 MSSQL:

圖 15 – 保存選項

  • 您可以創建一個新數據庫或在線使用該數據庫。您可以在另一個 SQL Server 實例中恢復並指定身份驗證類型,即Windows 身份驗證或 SQL Server 身份驗證。此外,您可以指定數據庫文件的位置:

圖 16 – 選擇驗證類型

  • 單擊保存。

恢復的表記錄和其他選定的數據將保存在修復的 MDF 文件中。

觀看 SQL Recovery 軟件的完整工作過程:

結論

在本文中,我們學習瞭如何在 SQL Server 中恢復已刪除的記錄。這些解決方案可以在 Windows 中的任何 SQL Server 版本中運行。如果您有完整的數據庫備份可用,您可以嘗試使用帶有日誌序列號 (LSN) 的事務日誌來恢復已刪除的記錄。如果備份已損壞,請使用 Stellar Repair for MS SQL 以恢復 SQL Server 或其他格式(如逗號分隔值 (CSV) 文件、HTML 或 XLS)中已刪除的數據。

SQL 數據庫修復軟件不僅可以幫助恢復已刪除的行,還可以恢復因病毒攻擊、硬件故障或其他原因而損壞的 SQL 數據庫。

留下评论