如何解决SQL Server数据库备份过程中检测到的日志损坏问题

2023年 11月 8日 57.9k 0

译者 | 李睿

审校 | 重楼

日志损坏问题通常发生在对事务日志进行备份的时候。其错误是这样描述的:

“消息26019,级别16,状态1,第1行BACKUP在数据库日志中检测到损坏。有关详细信息,请查看错误日志。BACKUP LOG异常终止。”

本文中将解释发生这个错误的原因以及如何解决这个问题。

数据库日志错误损坏意味着什么?

级别16的错误并不那么严重,这是在杂项用户错误的类别。数据库将会正常工作。如果进行一个完整的备份,它将会工作。如果运行DBCC CHECKDB,它将不会检测到错误。

但是,事务日志文件被损坏,第1行则是失败的代码行。

为什么会出现这个错误?

要找出这个错误的原因,需要检查SQL错误日志。

可以在SQL Server管理工作室(SSMS)中找到错误日志。

在“对象资源管理器”中选择“管理>SQL Server日志”,可以看到当前日志和之前的日志。双击日志,就可以看到事件和错误。

也可以检查事件查看器,进入Windows日志>应用程序,寻找MSSQL Server错误。

可能导致日志损坏的最常见问题是硬件问题。此外,一些软件也可能会损坏数据库。

例如,在执行事务时遇到电源故障可能会关闭服务器,然后日志可能会损坏。另一个常见的问题是磁盘故障。如果磁盘老旧,或者遭遇停电,或者有供电问题,就会发生这种情况。如果服务器温度过高,可能会出现硬件问题。

一些软件可以破坏日志,例如病毒和恶意软件可能会破坏日志文件。

如何解决在SQL Server数据库备份过程中检测到的日志损坏

如果对损坏的数据库进行完整备份,则备份将运行,但将使用损坏的日志文件备份数据库。

如果尝试只备份日志文件,将得到以上提到的错误。

该问题的解决方案是使用“出错时继续”(Continue on Error)选项进行备份。

要执行此操作,需要打开SSMS。

在“对象资源管理器”中右键单击“数据库”,选择“任务>备份”。

选择“事务日志”选项。

在“媒体选项”中,选择“在错误时继续”选项。

即使事务日志已损坏,这一选项也将继续执行备份。

解决这个问题的另一种方法是将数据库设置为“简单恢复”模式。

在SSMS中,进入对象资源管理器。

单击“数据库”,右键单击该数据库,然后选择“属性”。

进入“选项”页面,选择“简单恢复”模式。

使用T-SQL运行检查点(checkpoint)。

CHECKPOINT

对数据库进行完整备份。

现在能够对日志文件进行备份,而不会出现错误。

如何使用Stellar Repair for MS SQL解决SQL Server数据库备份过程中检测到的日志损坏问题

解决这个问题的另一种方法是使用Stellar Repair for MS SQL。这个软件可以使用SQL Server数据文件修复数据库,也可以使用损坏的SQL Server备份来恢复所有信息。一旦数据库恢复,就可以备份日志文件而不会出现错误。

要做到这一点,用户需要从其网站链接下载软件。

先将数据库联机。执行以下命令:

ALTER DATABASE stellardb
SET OFFLINE;

需要找到数据文件,数据文件是扩展名为.mdf的文件。该文件包含数据库信息。

如果知道mdf文件在哪里,可以浏览并选择它,然后按下“修复”按钮。

在修复之后,可以将数据保存在新数据库(New Database)中。实时数据库(Live Database)将取代当前数据库。当选择其他格式时,可以导出Excel、CSV或HTML文件中的表格和视图数据。

如果选择新数据库或实时数据库,则可以备份日志文件而不会出现错误,因为修复后的数据库不会损坏。

结论

本文介绍了在日志损坏时将会发生什么错误,还了解了发生这一错误的原因。此外,还介绍了使用“出错时继续”选项如何进行备份。最后,学习了如何使用Stellar repair for MS SQL修复数据库。

原文标题:Resolving Log Corruption Detected During Database Backup in SQL Server,作者:Daniel Calbimonte

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论