ESE 474 -1018:在数据库中检测到无法恢复的错误

[本主题旨在解决由 Exchange Server 分析工具发现的特定问题。应只将此主题应用到已对其运行 Exchange Server 分析工具并且正面临该特定问题的系统中。通过可以免费下载的 Exchange Server 分析工具,远程收集拓扑中每台服务器的配置数据并自动分析数据。结果报告详述了重要的配置问题、潜在问题以及一些非默认产品设置。通过遵守这些建议,可以获得更佳的性能、可伸缩性、可靠性及正常运行时间。有关此工具或下载最新版本的详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=34707(英文网页)上的“Microsoft Exchange 分析工具”。]  

上一次修改主题: 2008-01-18

Microsoft Exchange 数据库故障排除程序工具在应用程序日志中检测到一个或多个错误代码为 -1018 的 ESE 474 事件。如果 Microsoft Exchange 完整性验证组件确定 Exchange Server 无法从硬盘子系统正确存储或检索 Exchange 数据库文件数据,则生成此错误。

解释

由于硬盘子系统硬件组件存在缺陷,或者由于硬盘子系统中的驱动程序和/或固件已过时或不兼容,可能出现错误代码为 -1018 的 ESE 474 事件。

遇到 -1018 错误后,对服务器运行的诊断硬件测试可能报告无磁盘子系统硬件问题,因此自然认定是 Exchange Server 导致了该问题。

Microsoft 和硬件供应商经过广泛调查,已确定磁盘子系统硬件组件、支持驱动程序和/或固件存在的小问题才是大多数 -1018 错误的罪魁祸首。

发现数据库文件中的初始化页面存在下列任一情况时,Exchange 将报告 -1018 错误:

  • 在页面上存储的校验和与读取页面时执行的校验和重新计算的结果不匹配。
  • 在页面上存储的页码与页面上应该具有的页码,即指定页面在数据库文件中的物理位置不匹配。

如果出现下列情况之一,则 Exchange 可能导致自生成的 -1018 错误:

  • Exchange 构建具有错误校验和的页面。
  • Exchange 正确构建了页面,但却令操作系统将该页面写入了错误的位置。

在将所有数据写入页面后,Exchange 为将要写入磁盘的页面生成校验和。这包括页码本身。Exchange 将校验和添加到页面后,通过使用基于已发布的标准 Windows 的 API 指示 Windows 操作系统将页面写入磁盘。

暂时性内存错误可能会导致将页面写入硬盘上的错误位置。

即使页面校验和是正确的,Exchange 也会报告 -1018 错误,因为逻辑页码与物理页码不匹配。

在 Exchange 数据库中报告的单个 -1018 错误通常不会导致 Exchange 数据库停止,或者导致除出现 -1018 错误之外的其他症状。受影响的页面可能位于很少访问的文件夹(如 Sent Items 或 Deleted Items 文件夹)中或很少打开(或者甚至为空)的附件中。

虽然单个 -1018 错误不大可能导致大量数据丢失,但是 -1018 错误确实是个问题,因为它们表明存储系统至少有一次未能可靠地存储或检索数据。-1018 错误是问题可能会日趋恶化的一个预警。即使第一个 -1018 错误是针对数据库中的空白页面报告的,但却无法预知接下来哪一个页面可能会被损坏。如果关键的全局表被损坏,则 Exchange 数据库可能无法启动,而且数据库修复可能不成功或仅部分成功。

记录 -1018 错误后,在找到错误的根本原因之前,请对即将出现故障和其他随机损坏的可能性予以考虑并制定相应计划。

用户操作

尝试更正应用程序日志中记录的 ESE 474 -1018 错误之前,请确保服务器的磁盘子系统是稳定的。

若要解决磁盘子系统问题,请执行下列操作:

  1. 打开应用程序日志,并搜索 ESE 474 事件。在每个事件中,记录受影响数据库的完整路径。在编译受影响数据库列表后,记录在数据库路径中引用的驱动器号。利用此信息可以直接解决这些物理磁盘的问题。
  2. 查看系统日志,并确保未记录磁盘读取、写入或超时错误。
  3. 使用制造商提供的磁盘子系统诊断实用程序,并在验证磁盘子系统的完整性时与磁盘子系统硬件供应商联系以获取更多帮助。

更正了磁盘子系统的任何问题或验证其稳定性后,使用下列方法从 -1018 错误进行恢复。按优先顺序或首选用法列出了这些方法:

第一种方法   从应用程序日志的 ESE 474 事件中提及的数据库移动邮箱。将邮箱移动到现有的、已知良好的存储,或者专为此目的新建一个邮箱存储。移动所有邮箱后,删除损坏的邮箱存储。

移动邮箱(Exchange 2000 Server 或 Exchange Server 2003)

  1. 在 Active Directory 用户和计算机中,选择要移动其邮箱的一个或多个用户。

  2. 右键单击上一步中选择的用户列表,再单击“Exchange 任务”。

  3. 在“Exchange 任务向导”的“可用任务”页上,单击“移动邮箱”,再单击“下一步”。

  4. 小心阅读并执行向导的其余步骤。

移动邮箱(仅限 Exchange Server 2003)

  1. 在“Exchange 系统管理器”中,依次展开“服务器”、要从中移动邮箱的服务器、要从中移动邮箱的“存储组”和包含要移动的邮箱的“邮箱存储”,再单击“邮箱”。

  2. 在详细信息窗格中,右键单击要移动其邮箱的一个或多个用户,再单击“Exchange 任务”。

  3. 在“Exchange 任务向导”的“可用任务”页上,单击“移动邮箱”,再单击“下一步”。

  4. 小心阅读并执行向导的其余步骤。

使用 Exchange 管理控制台移动邮箱(仅限 Exchange Server 2007)

  1. 启动 Exchange 管理控制台。

  2. 在控制台树中,展开“收件人配置”,再单击“邮箱”。

  3. 在结果窗格中,单击要移动的一个或多个邮箱。

  4. 在操作窗格中,单击“移动邮箱”。

  5. 在“移动邮箱向导”的“简介”页上,依次选择要向其移动邮箱的服务器、存储组和邮箱数据库,再单击“下一步”。

  6. 在“移动选项”页上,选择用于处理邮箱中已损坏邮件的选项,再单击“下一步”。

  7. 在“移动日程安排”页上,指定移动应开始的时间,再单击“下一步”。

  8. 在“移动邮箱”页上,查看摘要来确认邮箱移动,再单击“移动”。

  9. 在“完成”页上,单击“完成”。

有关使用“移动邮箱”向导和 Move-Mailbox cmdlet 的支持方案的详细信息,请参阅 Exchange Server 2007 产品文档中的“Moving Mailboxes”(移动邮箱)(https://go.microsoft.com/fwlink/?LinkId=85754)。

第二种方法   从已知良好的备份还原数据库。有关如何还原 Exchange Server 数据库的详细信息,请参阅下列文章:

第三种方法   使用 Eseutil 对受影响数据库执行硬修复。仅当前两种方法失败时才应使用此方法。运行硬修复后,还必须对已修复数据库执行脱机碎片整理,并运行 Isinteg 工具修复逻辑损坏。可以使用 Exchange 数据库故障排除程序修复任务执行这些步骤。这将自动运行 Eseutil /P、Eseutil /D 和 Isinteg 操作。

详细信息

有关此问题的详细信息,请参阅下列 Microsoft 知识库文章和 Exchange 资源: