修复 Exchange 数据库

 

上一次修改主题: 2007-01-10

尝试修复 Exchange 数据库只是最后的手段,因为这样的尝试可能导致数据丢失。

可以通过使用 Eseutil.exe 和 Isinteg.exe 来修复 Exchange 数据库文件(.edb 文件),还可以使用恢复存储组从已损坏的数据库中抢救数据。有关使用恢复存储组的信息,请参阅 Using Exchange Server 2003 Recovery Storage Groups(英文)。

在服务器上全局运行 Exchange 工具

默认情况下,在 Exchange 安装过程中,会在 ..\exchsrvr\bin 目录中安装一些工具(例如,Eseutil 和 Isinteg)。若要在服务器上全局运行这些工具(从任何命令提示符),请将 ..\exchsrvr\bin 的完整路径添加到 Windows Server 2003 系统路径中。

有关详细说明,请参阅如何将 ..\exchsrvr\bin 目录添加到 Windows Server 2003 系统路径。将 \bin 添加到系统路径之后,应该能够从服务器上的命令提示符下运行 Eseutil 和 Isinteg。还应该能够运行 ..\exchsrvr\bin 目录中存储的其他任何工具。

使用 Eseutil 和 Isinteg 修复 Exchange 数据库

此部分包含使用 Eseutil 或 Isinteg 来修复 Exchange 数据库时应当了解的常规信息。

有关使用 Eseutil 或 Isinteg 的详细信息,请参阅 Microsoft 知识库文章 812357“在 Exchange Server 5.5、Exchange 2000 Server 和 Exchange Server 2003 中使用 Eseutil /p 工具修复 Exchange 数据库后如何维护该数据库”和 182081“Isinteg 实用工具的说明”。修复 Exchange 数据库时,请考虑以下信息:

  • 使用 Eseutil 和 Isinteg 修复 Exchange 数据库会导致所修复的 Exchange 数据库丢失数据。为此,在试图执行修复过程之前,请先复制要修复的数据库文件。(有关如何复制数据库文件的信息,请参阅恢复 Exchange 数据库中的“移动或复制要还原的数据库文件的现有版本(可选)”。)由于无法撤消在修复过程中对数据库的更改,因此仅将使用 Eseutil 和 Isinteg 作为最后手段。如前所述,建议通过还原备份集而不是修复数据库来恢复损坏的数据库。
  • 如果使用 Eseutil 修复 Exchange 数据库,必须有足够的可用磁盘空间来运行 Eseutil。如果要运行 Eseutil /P,必须在同一驱动器上拥有所修复数据库大小的大约 20% 的可用空间。如果没有这么多空间,可以使用命令行开关将临时文件重定向到其他位置。如果要使用 Eseutil /D,必须有数据库大小的 110% 的空间。虽然可以像使用 /P 开关一样将临时文件重定向到另一个驱动器,但这将大幅度增加修复数据库所需的时间。如果可能,使用 /D 开关时要有充足的可用空间。
  • 使用 Eseutil 和 Isinteg 实用程序修复数据库文件要花费相当长的时间。通常,修复数据库比从备份还原数据库花费的时间更长。
  • 如果这两个实用程序都成功运行(例如,如果最后一次运行 Isinteg 结束时没有任何错误),则通常认为数据库已修复,并且已做好替换已损坏的数据库的准备。
    如果计划将修复后的数据库放回生产环境中,必须执行下列步骤:
    1. 运行 Eseutil /P
    2. Eseutil /P 成功完成之后,运行 Eseutil /D
    3. Eseutil /D 成功完成之后,运行 Isinteg –fix –test alltests
      如果只是计划从磁盘抢救数据,而没有计划将其放回生产环境中,则可以跳过此部分前面的步骤 2。跳过步骤 2 将节约恢复过程中所需的时间,但可能导致数据库出现索引和空间分配错误。这些错误不是您希望在生产环境中发生的错误,但它们可能不会影响从数据库抢救数据的能力。
  • 如果 Eseutil 和 Isinteg 无法修复数据库中的每个错误,最好不要放弃被修复的数据库。Isinteg 完成之后,应当报告数据库中有零个错误。如果错误计数大于零,请再次运行 Isinteg 直到计数变为零,或在后续运行中计数不再减少。如果无法让错误计数归零,请不要将数据库放到生产环境中。请通过将文件夹合并或复制到新的数据库,或通过将邮箱移动到新的数据库,抢救数据库中的数据。
  • 可以使用另一个服务器从已损坏的数据库还原数据。例如,可以将损坏的数据库还原到另一个服务器,然后使用 Exmerge 实用程序从该数据库中提取数据,再将数据插入到新的数据库文件中。也可以在同一服务器上使用恢复存储组,从损坏的数据库中还原数据。有关恢复存储组的信息,请参阅 Using Exchange Server 2003 Recovery Storage Groups(英文)

默认情况下,安装 Exchange 时,Eseutil 和 Isinteg 都安装到 <drive>\Program Files\Exchsrvr\bin 目录中。