损坏的 mdf 文件导致备份作业失败

sun*_*eth 6 sql-server-2008 sql-server

我们的 SQL Server 2008 数据库之一遇到了问题。其数据文件中的某些内容似乎已损坏,这导致我们的日常数据库备份作业失败。上一次成功备份是在一个月前 :(

幸运的是,数据库已启动并正在运行,并且应用程序能够连接到它。唯一的问题是它不允许再备份数据库。

  • 当我尝试进行备份时,它给了我"Read on e:\xxx\xyz.mdf file failed. reason 15105"错误。

  • 我已经停止了 SQL 服务器服务并尝试手动复制 mdf 和 ldf 文件,但系统不允许我们复制 mdf 文件。它给出了“无法从磁盘读取”错误

我已经运行DBCC CHECKDB命令来检查错误,下面是结果

1) 无法读取和锁存页 (1:43515),锁存类型为 SH。23(无法检索此错误的文本。原因:15105)失败。

2) 对象 ID 567673070,索引 ID 1,分区 ID 72057595461697536,分配单元 ID 72057595536211968(类型行内数据):在 ID 为 1788936192 的行外数据中发现错误:R25 由数据记录标识:R24 ID = 201 )

我正在考虑运行DBCC命令,REPAIR_ALLOW_DATA_LOSS但我真的很害怕丢失数据。如果出现严重问题,我们甚至没有最近的备份副本可以恢复。拥有生产数据库而无法对其进行备份对我们来说是一个巨大的风险。

  • 在不丢失数据的情况下修复损坏的数据文件的最佳方法是什么?你推荐任何第三方工具吗?

  • 有没有其他方法可以在开始修复之前备份/获取此数据库的副本?

Ken*_*her 2

鉴于您可以连接到数据库,您实际上可能处于良好状态。您可以使用多种可能有效的方法,但这里是一种。

  1. 最好在另一个磁盘上创建一个新数据库,因为您的磁盘可能已损坏。

  2. 使用生成脚本为现有数据库生成脚本。包括所有数据库对象和权限。

在此输入图像描述

  1. 在新数据库上运行脚本以创建您需要的所有结构。

  2. 手动或通过工具(例如导入/导出向导)将损坏数据库上每个表的数据复制到新数据库中。不幸的是,这是最有可能出现问题的步骤。如果您确实遇到问题,那么问题可能只是少数记录,您可以使用导入/导出向导生成 SSIS 包并更改该特定表的错误设置以忽略故障。

不管怎样,完成后请进行备份。(当然)