Eseutil /P 修复模式

 

上一次修改主题: 2006-06-09

Eseutil 修复模式可以在页级别以及可扩展存储引擎 (ESE) 表级别纠正数据库问题,但不能在应用程序级别纠正数据库问题。使用 Eseutil 修复数据库之后,应运行 ISInteg 以便在应用程序级别修复数据库。若要了解数据库页级别、ESE 表级别以及应用程序级别的含义,请参阅数据库恢复策略。有关使用 Eseutil /P 的语法和说明的详细信息,请参阅如何在各种情况下运行 Eseutil /P(修复)

在修复期间,可能必须丢弃某些表甚至全部表中的行。在完成 ESE 级别修复之后,必须执行应用程序级别修复,以纠正因缺少数据目前在应用程序级别可能存在的问题。可以使用信息存储完整性 (ISInteg) 实用程序来执行此 Exchange 应用程序级别的分析和修复。以下示例说明如何进行 Eseutil 修复。

例如,数据库中的某个表用于存储所有邮箱的邮件。对每个用户的“收件箱”文件夹使用一个单独的表。假设在使用 Eseutil 修复邮件表时丢失了某个邮件。Eseutil 不会在每个“收件箱”文件夹中将该邮件与其引用相关联,因为 Eseutil 不了解应用程序的交叉表架构。ISInteg 需要将已修复的邮件表与每个“收件箱”文件夹进行比较,并从“收件箱”中删除丢失的邮件。

简言之,Eseutil 将查看每个 Exchange 数据库页和表,并确保每个表内的一致性和完整性。ISInteg(建议在运行 Eseutil 之后运行)可以在应用程序级别修复数据库,并确保表关系的完整性。

修复数据库包含以下三个阶段(按如下顺序执行):

  1. 在 /P 模式下运行 Eseutil,以执行数据库页级别和表级别的修复
  2. 在 /D 模型下运行 Eseutil,以完整地重建索引并对数据库进行碎片整理
  3. 然后运行 ISInteg,以便在应用程序级别修复数据库
note注意:
成功修复不一定意味着数据库将始终是可用的。丢失系统元数据可能会使数据库无法装入或为空。如果数据库不可修复,则可以从备份还原数据,或创建新的数据库。

将已修复的数据库重新用于生产

需要判断是否应该将已修复的数据库永久用于生产。许多管理员采用的策略是仅使用已修复的数据库来抢救数据。管理员尽快将邮箱移动到其他数据库,或将已修复数据库中的数据合并到已知完好的数据库中。

Eseutil 和 ISInteg 都将生成详细的修复日志文件,这些文件会列出已找到并纠正的错误。有关特定错误的原因和后果的详细信息,可以搜索 Microsoft 知识库,并参阅有关常见 Eseutil 错误参考的主题。这些信息可帮助您决定是否接受将已修复数据库继续用于生产所带来的风险。

Eseutil /P 最佳实践

无法从备份还原数据库或无法完全前滚事务日志时,请使用 Eseutil /P。

note注意:
如果无法前滚事务日志文件,则最好遵循混合策略。可以从备份还原正在运行的数据库版本、修复恢复存储组中已损坏的数据库,以及合并这两个数据库。

Microsoft 建议您在修复数据库时遵循以下最佳实践:

  • 不要将已修复的数据库长期继续用于生产。
  • 可以进行备份时,不要使用 Eseutil 修复选项。
  • 不要使用 Eseutil 修复模式来消除 -1018 错误。有关错误 -1018 的详细信息,请参阅 Microsoft 知识库文章 812531“支持 Web 广播:Microsoft Exchange:理解和分析错误 -1018”(https://go.microsoft.com/fwlink/?linkid=3052&kbid=812531)。

以前的 Exchange 版本

下表说明 Eseutil 修复模式在不同的 Exchange 版本中是如何工作的:

Exchange 200x

默认情况下,修复进程的详细日志记录存储在名为 database.integ.raw 的纯文本文件中。此日志将指明具体修复的表以及需要修复的问题。

Exchange 5.5

必须使用 /V 开关来指定详细日志记录,以查看类似的详细信息。

详细信息

有关详细信息,请参阅 Exchange Server 数据库实用程序指南中的下列主题: