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

译文
数据库 SQL Server
开发人员需要解决SQL Server中由于病毒、恶意软件或硬件攻击而导致的日志损坏问题。本文将展示不同的解决方案。

译者 | 李睿

审校 | 重楼

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

“消息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



责任编辑:华轩 来源: 51CTO
相关推荐

2009-12-10 14:19:41

配置静态路由

2023-12-12 11:27:58

2010-07-08 15:55:25

SQL Server

2011-03-24 09:07:11

SQL Server数备份

2010-07-06 14:40:15

解决SQL Serve

2010-09-27 13:45:38

2010-07-08 11:05:14

SQL Server数

2021-05-17 06:57:34

SQLServer数据库

2023-09-05 00:06:45

2011-04-01 17:05:44

SQL Server数日志

2010-07-05 14:41:21

SQL Server数

2010-07-15 17:28:50

SQL Server

2010-05-24 11:17:41

MySQL数据库

2010-11-12 09:18:13

SQL Server存

2011-03-04 17:38:52

2011-08-09 12:15:08

SQL Server日志已满

2024-04-02 08:21:45

数据库日志SQL

2011-09-02 10:53:31

SQL Server 还原日志备份差异备份

2010-09-06 11:05:05

SQL SERVER语句

2011-07-28 14:31:47

SQL Server数存储过程
点赞
收藏

51CTO技术栈公众号