如何恢复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 Server 中恢复已删除表的过程已成功完成。如果您想查看恢复的已删除的 SQL 表记录,请运行下面提到的命令。

USE RecoverDeletedTables_COPY

GO

SELECT * from Employee

注意力:在上述代码中,将位置“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 撤消删除或立即解决您的查询。