如何恢復SQL Server數據庫中已刪除的表?

了解 MS SQL 表及其命令

我們都知道MS SQL Server使用表來管理其關係數據庫,包括所有記錄。許多組織和公司使用 SQL(結構查詢語言)來滿足其自動化事務需求。

企業和電子商務網站使用 SQL Server 數據庫表來存儲首選自動化記錄,即員工 ID、員工姓名、地址、電話號碼、電子郵件 ID 等。 SQL 表架構可能相應不同。

SQL管理員主要針對SQL表執行上述命令來對其進行相應的管理。

  • 刪除:用於刪除一條記錄。
  • 降低:用於刪除整個表,包括所有可用記錄。
  • 插入:用於在表中插入一條記錄。
  • 更新:用於修改SQL表記錄。
  • 創造:用於在 SQL 數據庫中創建新的 SQL 表或對象。
  • 授予:用於分配特權權限。
  • 撤銷:取回分配的特權權限。

#1) 通過SSMS從SQL Server表中恢復已刪除的數據

只需繼續執行以下步驟即可在 SQL Server 2022、2019、2017、2016、2014、2012、2008 R2、2005 和 2000 中恢復已刪除的表。此方法專門供用戶學習如何在 SQL Server Management Studio 應用程序中恢復表。

  1. 開始SQL Server管理工作室(SSMS) 在您的計算機上。
  2. 此後,右鍵單擊數據庫文件夾並選擇恢復數據庫
  3. 檢查收音機與您的計算機關聯的按鈕,然後單擊瀏覽圖示(……)
  4. 之後,選擇備份媒體類型為文件並按添加
  5. 選擇備份文件從數據庫恢復已刪除的表並點擊好的
  6. 此後,您的刪除的SQL表數據恢復現在看到完成消息。
  7. 最後,按好的按鈕成功從 SQL Server 表中恢復已刪除的數據。

#2) 使用 LSN 恢復 SQL Server 中已刪除的表

注意:LSN(日誌序列號)技術不允許從 SQL Server 中的表中恢復已刪除的數據。如果事務日誌備份損壞或丟失。這是執行此技術所必需的,因為每個 SQL 日誌記錄都可以通過 LSN 來標識。

第一階段:創建 SQL 數據庫

執行以下命令創建名為“RecoverDeletedTables”的 SQL 數據庫,表名為“Employees”。

USE [master];

GO

CREATE DATABASE RecoverDeletedTables;

GO

USE RecoverDeletedTables;

GO

CREATE TABLE [Employees] ()

[Sr.No] INT IDENTITY,

[Date] DATETIME DEFAULT GETDATE (),

[City] CHAR (25) DEFAULT ‘City1’);

第 2 階段:在 SQL 表中插入數據

使用第 1 階段,我們成功創建了包含 3 個不同列的表的 SQL 數據庫。現在看插入過程。

USE RecoverDeletedTables;

GO

INSERT INTO Employees DEFAULT VALUES;

GO 100

第三階段:刪除SQL表中的一些行

USE RecoverDeletedTables

Go

DELETE Employees

WHERE [Sr.No]

GO

Select * from Employee

第 4 階段:了解已刪除的表行

現在,是時候通過搜索事務日誌數據來獲取有關已刪除 SQL 行的信息了。

USE RecoverDeletedTables

GO

SELECT

[Current LSN],

[Transaction ID],

Operation,

Context,

AllocUnitName

FROM

fn_dblog(NULL, NULL)

WHERE

Operation = ‘LOP_DELETE_ROWS’

使用上述命令後,您可以看到已刪除的SQL表行的事務ID。這裡,我們需要查詢Rows的刪除時間。

5階段:獲取LOP_BEGIN_XACT日誌記錄的LSN,輕鬆學習如何恢復SQL Server中已刪除的表

現在,必須使用事務 ID 來獲取提取行刪除時間。

USE RecoverDeletedTables

GO

SELECT

[Current LSN],

Operation,

[Transaction ID],

[Begin Time],

[Transaction Name],

[Transaction SID]

FROM

fn_dblog(NULL, NULL)

WHERE

[Transaction ID] = ‘0000:0000030e’

AND

[Operation] = ‘LOP_BEGIN_XACT’

之後可以看到當前LSN、操作、事務ID、事務名稱等信息。

6 階段:恢復 SQL Server 中已刪除的表

此後,您需要通過在 LSN 前添加“0x”來將 LSN 值從十六進制格式更改為十進制格式。這有助於從數據庫恢復已刪除的 SQL 表。

–Restoring Full backup with norecovery.

RESTORE DATABASE RecoverDeletedTables_COPY

FROM DISK = ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.BITRECOVER\MSSQL\Backup\RecoverDeletedTables.bak’

WITH

MOVE ‘RecoverDeletedTables’ TO ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.BITRECOVER\MSSQL\Backup\RecoverDeletedTables.mdf’,

MOVE ‘RecoverDeletedTables_log’ TO ‘C:\Program Files\Microsoft SQL Server\MSSQL10_50.BITRECOVER\MSSQL\Backup\RecoverDeletedTables.ldf’,

REPLACE, NORECOVERY;

GO

–Restore Log backup with STOPBEFOREMARK option to recover exact LSN.

RESTORE LOG RecoverDeletedTables_COPY

FROM

DISK = N’C:\Program Files\Microsoft SQL Server\MSSQL10_50.BITRECOVER\MSSQL\Backup\RecoverDeletedTables_tlogbackup.trn’

ITH

STOPBEFOREMARK = ‘lsn:0x00000015:0000002a:0001’

現在,在 SQL Server 中恢復已刪除表的過程已成功完成。如果您想查看恢復的已刪除的 SQL 表記錄,請運行下面提到的命令。

USE RecoverDeletedTables_COPY

GO

SELECT * from Employee

建議閱讀:SQL Server 以輕鬆的方式複製表

注意力:在上述代碼中,將位置“C:\Program Files\Microsoft SQL Server\MSSQL10_50.BITRECOVER\ MSSQL\Backup\RecoverDeletedTables.bak”替換為保存備份文件的路徑。請將 MDF 和 LDF 文件的路徑替換為存儲 MS SQL 數據庫文件的路徑。

#3) 通過自動化工具恢復 SQL Server 中已刪除的表

如果上述方法無法恢復 SQL Server 中已刪除的表,那麼您應該使用SQL Server 恢復軟件。該實用程序能夠修復 SQL Server 主數據庫以恢復已刪除的 SQL 表。該工具支持 Microsoft SQL Server 2022、2019、2017、2016、2014、2012、2008 R2、2005 和 2000 版本。有了這個,用戶可以輕鬆地執行SQL撤消刪除任務。

然而,我們已經討論了在 SQL Server 中恢復已刪除表最常用的 3 種最佳方法。但是,如果您具有 SQL Server 管理員級別的知識,建議您採用手動步驟來恢復 SQL Server 中已刪除的表。如果萬一您是非技術用戶,則必須使用推薦的工具包來 SQL 撤消刪除或立即解決您的查詢。