SQL Server 数据库恢复: 如何使用备份文件从受损的数据库中恢复数据

发布于:2025-06-30 ⋅ 阅读:(14) ⋅ 点赞:(0)

有多种原因可能导致 SQL 数据库文件(MDF/NDF)损坏。完整性问题、停电、系统突然或不适当的关闭、恶意软件攻击、网络故障等都有可能会造成 SQL 数据库的损坏。从任何损坏的数据库中恢复数据的最简单方法是从备份(.bak)文件中恢复数据。

即便是备份文件有时也可能损坏,可以使用第三方工具采取进一步的措施。

使用 BAK 文件,从损坏的 SQL Server 数据库恢复数据

该方法可以借助于备份文件,从损坏的数据库中恢复数据。

1. 使用 SQL Server Management Studio (SSMS)

Microsoft SSMS 提供了一个用户友好的 GUI,可以使用多个 SQL 函数。可以从备份文件还原 SQL 数据库。

  • 启动 SSMS。
  • 连接到保存数据库的 SQL Server 实例。
  • 在 Object Explorer 中,右键单击 Databases。
  • 点击 Restore Databases
  •  Restore Databases 窗口中,单击 General 页面(默认情况下处于打开状态)。
  • 在 Source 区域,可以从两个选项中选择其中一个。
  • 可以从下拉列表中选择要还原的数据库。
  • 或者,可以选择 Device 选项并通过单击三个点(...)找到您的备份文件。
  • 由于此时需要从备份文件恢复数据库,因此需要使用 device 选项。
  • 单击该选项中的省略号(...),将弹出 Select backup devices 选项。
  • 在 Backup media type 旁边的下拉列表中,选择 File ,然后单击 Add
  • 从 Backup 文件夹中找到要还原的备份文件(.bak)。
  • 选择备份文件(.bak),然后单击 OK。
  • 在 Database 字段中可以看到要恢复的数据库的名称。
  • 所选备份文件将显示在 Backup sets to restore 部分。
  • 在 Restore Database 窗口的左侧面板中,单击 Options。
  • 在 Restore Options 下,选择选项 'Overwrite the existing database(WITH REPLACE)' 。这将覆盖现有的数据库。为避免覆盖,请创建一个新数据库并将物理文件移动到新的目标。
  • 在 Recovery state(恢复状态)旁边的下拉列表中,选择 RESTORE WITH RECOVERY(还原并恢复),以查看消息“通过回滚未提交的事务,让数据库可供使用。无法恢复其他事务日志”。
    如果在执行完全还原后进行差异或日志还原,请选择 RESTORE WITH NORECOVERY。
  • 单击 OK 按钮以成功还原数据库。
  • 单击 OK 完成该过程。

2. 使用 T-SQL 恢复数据库

也可以使用 T-SQL 技术进行恢复。以下是在 T-SQL 命令的帮助下从 .bak 文件还原数据库的方法。

  • 打开 SSMS 并连接 SQL Server 实例。
  • 从顶部的工具栏中,单击 New Query。
  • 在生成的 Query Editor 窗口中,运行如下所示的 restore 命令,以从备份文件恢复完整的数据库。
USE [master]
BACKUP DATABASE [testing]
RESTORE DATABASE [SQL_TEST_DB] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.SQLEXPRESS\MSSQL\Backup\SQL_TST_DB.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5
GO

3. 使用 Windows PowerShell 命令还原数据库

以下是 Restore SQL Database 命令,用于使用备份文件在 PowerShell 中执行此任务。

Restore-SqlDatabase -ServerInstance [server-instance] -Database [database-name] -BackupFile [backup-file] -ReplaceDatabase

该命令支持 SQL 中的各种回溯还原,包括事务日志还原、数据库文件还原和完整数据库还原。

如何从损坏的备份文件中恢复数据?

数据库可能会损坏,备份文件同样可能会因各种因素而损坏或损坏。其原因包括 RAM、硬盘、CPU 或网络问题。恶意软件入侵或突然断电也可能导致备份文件损坏,与数据库损坏的情况相同。可以在 SQL Server Management Studio 中使用 T-SQL 命令来恢复损坏的备份文件。

首先需要验证备份的当前状态。将 VERIFYONLY 选项与 RESTORE 命令一起使用可能会有所帮助:

  DECLARE @BackupPath NVARCHAR(255) = 'f:\backups\testdb.bak';
  RESTORE VERIFYONLY
  FROM DISK = @BackupPath;

这将验证备份是正常的还是损坏的。如果文件损坏,最好使用不同的备份文件来恢复数据库。如果备用备份过时或根本没有,则必须还原和修复损坏的数据库。

  RESTORE DATABASE testdb
  FROM DISK = 'C:\backups\ testdb.bak'
  WITH REPAIR;

恢复备份文件——需要考虑的事项

在还原备份文件之前,请务必知道我们无法将新版本 SQL Server 中创建的 .Bak 文件还原到以前的版本。如果必须要这样做,则需要安装相似的版本,然后继续恢复备份文件。

以下是在还原备份文件之前需要注意的一些关键点:

  • 确保关闭所有活动连接,以避免还原过程失败
  • 如前所述,您无法将在新的 SQL Server 版本上创建的备份还原到旧版本。
  • 为了安全起见,应该创建活动事务日志文件的备份
  • 管理元数据以确保还原期间另一台服务器上的数据库的可用性

手动还原备份文件的替代方案

如果您不想陷入技术麻烦,解决此问题的一种相对简单的方法是使用第三方工具,以便有效地从损坏的数据库或备份文件中恢复数据。

为什么要备份 SQL Server 数据库?

前面介绍了从损坏的数据库或损坏的备份文件中恢复数据的方法。接下来我们需要了解频繁备份数据库的重要性。万无一失的备份和还原策略对于防止因大量故障而导致的数据丢失至关重要。该策略应包括:

  • 定期备份数据库。
  • 运行还原过程以测试备份的当前状态。
  • 将备份文件存储在安全的位置,以避免灾难性的数据丢失。

有效、最新且运行状况良好的备份可以从多个故障中恢复数据,例如:

  • 用户导致的错误,例如错误地删除了表。
  • 介质故障。
  • 硬件故障,例如服务器永久性故障或磁盘驱动器损坏。
  • 一场自然灾害。

创建数据库备份对于执行日常管理任务同样重要,例如:

  • 将数据库从一台服务器复制到另一台服务器。
  • 数据库镜像和存档。
  • 设置 Always On 可用性群组

数据库备份的类型

了解不同类型的备份可以更轻松地执行还原任务。

差异备份

它依赖于完整或部分数据库的最新完整备份。它还包括一组文件组(差异基准)或数据文件的备份,这些文件包含自最近一次完整数据库备份以来修改的数据。

完全备份

此备份类型包括特定数据库、文件或文件组中的全部数据。它还包含足够的日志以允许数据恢复。

日志备份

它表示事务日志的备份,该备份由所有日志记录组成,这些日志记录的备份不是在以前的日志文件备份中创建的。日志备份文件应包括 .TRN 扩展。

结论

SQL Server 的正常运行对于企业的平稳运行至关重要。但是,数据库或备份文件中的任何类型的损坏都可能使整个工作停止。它可能会导致商业声誉损失、经济损失和其他一些威胁性后果。为了摆脱这些麻烦,从损坏的数据库中及时恢复数据是不可避免的。

实现此目的的最常用方法之一是从有效、健康且最近创建的备份文件还原数据库。可以通过用户友好的 SQL Server Management Studio (SSMS) GUI、SMS 中的 T-SQL 命令或通过运行 PowerShell 命令来执行此数据库还原任务。

但是,备份文件同样有可能遭受损坏,从而导致进一步的麻烦。可以通过 VERIFYONLY 选项和 RESTORE 命令从任何此类损坏的备份文件中恢复数据。与这些复杂的手动方法相比,一个相对更好的替代方案是借助于权威的第三方软件,实现 SQL 数据库的自动化恢复。

此类软件可以帮助快速轻松地从损坏的数据库中恢复数据。在没有备份的情况下,恢复数据时可能会遇到严重的麻烦。因此,定期备份数据库至关重要,也是首选举措。


网站公告

今日签到

点亮在社区的每一天
去签到