Leg*_*ude 3 sql-server-2005 sql-server recovery corruption
我们公司多年来一直在运行 SQL Server 2005 服务器,但就在最近,我们遇到了一些麻烦。服务器配置了 RAID 5,阵列中有一个热备盘。其中一个磁盘出现故障,不久之后第二个磁盘也出现故障。不幸的是,我们没有对大部分数据进行备份(请不要说“应该有备份”的评论——我知道一个可靠的备份计划的重要性)。
所以我们两个磁盘都挂了,我们没有正式的 DBA,数据库也无法访问。我们的一名 IT 人员试图恢复 RAID 阵列,我们认为 RAID 开始重建,但他被命令将其关闭,因为担心在 RAID 重建期间可能会丢失数据。
我们将整个服务器发送给了一家数据恢复公司。他们花了两周时间在服务器上工作,首先对所有驱动器进行成像,然后从 RAID 重建数据。
我收到了一个包含所有“恢复”文件的硬盘。这是主要是数据库文件 (MDF) 和传输日志 (LDF) 的集合。服务器上的每个数据库仅包含一个 MDF 和一个 LDF。我目前无法访问原始服务器,因此我一直试图将这些数据库附加到另一台运行 SQL Server 2005 的服务器。但是,当我尝试重新附加任何数据库时,我遇到了问题。我收到的一些错误如下所示。我没有运气恢复任何这些文件。我按照本文中概述的步骤操作,即使那样也无法恢复任何文件。
我们向数据恢复公司支付了一大笔钱,用于从这台服务器恢复数据,我的任务是毫无疑问地证明这些数据对我们有用或没用。我只是没有确切的经验,所以我向你提出了一个问题,dba.stackexchange: 有没有办法恢复这些文件?
SQL Server 检测到基于逻辑一致性的 I/O 错误:pageid 不正确(预期为 1:134;实际为 0:0)。它发生在读取文件 'G:\Data\Data201309.mdf' 中偏移量 0x0000000010c000 处的数据库 ID 17 中的页面 (1:134) 期间。SQL Server 错误日志或系统事件日志中的其他消息可能会提供更多详细信息。这是威胁数据库完整性的严重错误情况,必须立即纠正。完成完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。
文件“G:\Data\Data201112_log.ldf”的标头不是有效的数据库文件标头。PageAudit 属性不正确。(Microsoft SQL Server,错误:5172)
G:\Data\Data201005.mdf 不是主数据库文件。(Microsoft SQL Server,错误:5171)
处理数据库“Data201008”的日志时出错。如果可能,从备份中恢复。如果备份不可用,则可能需要重建日志。
SQL Server 检测到基于逻辑一致性的 I/O 错误:校验和不正确(预期:0xe9b50f3a;实际:0x162a0f84)。它发生在读取文件“G:\Data\Data200803.mdf”中偏移量 0x000000f9a00000 处的数据库 ID 17 中的页面 (1:511232) 期间。SQL Server 错误日志或系统事件日志中的其他消息可能会提供更多详细信息。这是威胁数据库完整性的严重错误情况,必须立即纠正。完成完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。无法打开新数据库“Data200804”。CREATE DATABASE 已中止。(Microsoft SQL Server,错误:824)
有什么办法可以恢复这些文件吗?
不。
长答案是这样的:
ATTACH_REBUILD_LOGincorrect pageid (expected 1:134; actual 0:0). It occurred during a read of page (1:134))时,您必须编辑文件并修复它。当然,这要求您非常详细地了解(未记录的)MDF 格式。Page Anatomy of Page是一个不错的起点,但它实际上只是掠过表面。我真的希望您的 MDF引导页面正确“恢复”。您可以使用OrcaMDF尝试“冷”浏览 MDF,看看 OrcaMDF 是否抱怨结构问题,然后尝试修复它们。
“恢复”过程保持 MDF 文件大小并为坏扇区恢复 0 是至关重要的。如果他们只是删除了不可恢复的扇区,你就没有机会了。