更改队列数据库位置

适用于:Exchange Server 2013

队列是等待进入下一处理阶段的消息的临时保留位置。 每个队列表示传输服务器按特定顺序处理的一组逻辑消息。

与早期版本的 Exchange 一样,Microsoft Exchange Server 2013 使用可扩展存储引擎 (ESE) 数据库来存储队列消息。 所有不同的队列都存储在一个 ESE 数据库中。 队列仅存在于邮箱服务器或边缘传输服务器上。

队列数据库和队列数据库事务日志的位置由 XML 应用程序配置文件中的 %ExchangeInstallPath%Bin\EdgeTransport.exe.config 键控制。 此文件与 Microsoft Exchange 传输服务相关联。 下表对每个键进行了详细的说明。

说明
QueueDatabasePath 此键指定队列数据库文件的位置。 这些文件包括:
  • Mail.que
  • Trn.chk

默认位置为 %ExchangeInstallPath%TransportRoles\data\Queue

QueueDatabaseLoggingPath 此项指定队列数据库事务日志文件的位置。 这些文件包括:
  • Trn.log
  • Trntmp.log
  • Trn_nnn_.log
  • Trnres00001.jrs
  • Trnres00002.jrs
  • Temp.edb

当 Microsoft Exchange 传输服务启动时,Temp.edb 用于验证队列数据库架构。 虽然 Temp.edb 不是事务日志文件,但它与事务日志文件保存在同一位置。

默认位置为 %ExchangeInstallPath%TransportRoles\data\Queue

开始前,有必要了解什么?

  • 估计完成时间:15 分钟。

  • Exchange 权限不适用于本主题中的过程。 这些过程在 Exchange Server 的操作系统中执行。

  • 停止或重新启动 Microsoft Exchange 传输服务时,会中断服务器上的邮件流。

  • 更改队列数据库或事务日志的位置时,不会移动现有队列数据库和事务日志文件。 在新的位置创建新的队列数据库和新的事务日志。 现有文件保留在旧位置。 但是,它们不再使用。 如果要在新位置重用现有的队列数据库或事务日志文件,则必须在 Microsoft Exchange 传输服务停止后,但在服务启动之前将现有文件移动到新位置。

  • 如果队列数据库或事务日志的目标文件夹不存在,那么,如果父文件夹应用了下列权限,就会创建该目标文件夹:

    • 网络服务:完全控制
    • 系统:完全控制
    • 管理员:完全控制
  • 在您安装 Exchange 累积更新 (CU) 时,您在 Exchange XML 应用程序配置文件(例如,客户端访问服务器上的 web.config 文件,或邮箱服务器上的 EdgeTransport.exe.config 文件)中针对每个服务器所做的任何自定义设置都将被覆盖。 请确保保存此信息,以便在安装后轻松重新配置服务器。 安装 Exchange CU 后重新配置这些设置。

  • 若要了解本主题中的过程可能适用的键盘快捷键,请参阅 Exchange 管理中心内的键盘快捷键

使用命令提示符在新位置创建新队列数据库和事务日志

  1. 创建要在其中保留队列数据库和事务日志的文件夹。 确保对文件夹应用了正确的权限。

  2. 在命令提示符窗口中,通过运行以下命令在记事本中打开 EdgeTransport.exe.config 文件:

    Notepad %ExchangeInstallPath%Bin\EdgeTransport.exe.config
    
  3. 修改 节中的 <appSettings> 以下键。

    <add key="QueueDatabasePath" value="<LocalPath>" />
    <add key="QueueDatabaseLoggingPath" value="<LocalPath>" />
    

    例如,若要在 D:\Queue\QueueDB 中创建新的队列数据库,在 D:\Queue\QueueLogs 中创建新的事务日志,请使用以下值:

    <add key="QueueDatabasePath" value="D:\Queue\QueueDB" />
    <add key="QueueDatabaseLoggingPath" value="D:\Queue\QueueLogs" />
    
  4. 完成后,保存并关闭 EdgeTransport.exe.config 文件。

  5. 通过运行以下命令重新启动 Microsoft Exchange 传输服务:

    net stop MSExchangeTransport && net start MSExchangeTransport
    

你怎么知道这行得当?

若要验证是否已在新位置成功创建了新的队列数据库和新的事务日志,请执行以下步骤:

  1. 验证新位置处是否存在新的数据库文件 Mail.que 和 Trn.chk。

  2. 验证新位置处是否存在新的事务日志文件 Trn.log、Trntmp.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb 文件。

  3. 如果可以在 Microsoft Exchange 传输服务启动之后从旧位置删除旧的队列数据库和事务日志文件,那么将无法使用这些文件。

有疑问吗? 在 Exchange 论坛中寻求帮助。 访问 Exchange Server 的论坛。

使用命令提示符将现有队列数据库和事务日志移动到新位置

仅当出现未正常关闭 Microsoft Exchange 传输服务,或者出现硬盘驱动器故障的灾难恢复情况时,才需要还原并重新定位现有的队列数据库及其现有的事务日志。

在一般情况下,不应重复使用现有的事务日志。 Microsoft Exchange 传输服务正常关闭会将所有未提交的事务日志条目写入队列数据库。 并且使用循环日志记录,因此不会保留包含以前提交的数据库更改的事务日志。

使用以下步骤将现有队列数据库和事务日志移动到新位置:

  1. 创建要在其中保留队列数据库和事务日志的文件夹。 确保对文件夹应用了正确的权限。

  2. 在命令提示符窗口中,通过运行以下命令在记事本中打开 EdgeTransport.exe.config 文件:

    Notepad %ExchangeInstallPath%Bin\EdgeTransport.exe.config
    
  3. 修改 节中的 <appSettings> 以下键:

    <add key="QueueDatabasePath" value="<LocalPath>" />
    <add key="QueueDatabaseLoggingPath" value="<LocalPath>" />
    

    例如,若要将队列数据库的位置更改为 D:\Queue\QueueDB,将事务日志的位置更改为 D:\Queue\QueueLogs,请使用以下值:

    <add key="QueueDatabasePath" value="D:\Queue\QueueDB" />
    <add key="QueueDatabaseLoggingPath" value="D:\Queue\QueueLogs" />
    
  4. 完成后,保存并关闭EdgeTransport.exe.config文件。

  5. 通过运行以下命令停止 Microsoft Exchange 传输服务:

    net stop MSExchangeTransport
    
  6. 将现有数据库文件 Mail.que 和 Trn.chk 从原始位置移动到新位置。

  7. 将现有事务日志文件 Trn.log、Trntmp.log、Trn_nnnnn_.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb 从旧位置移动到新位置。

  8. 通过运行以下命令启动 Microsoft Exchange 传输服务:

    net start MSExchangeTransport
    

如何知道操作成功?

若要验证是否已将现有队列数据库和事务日志成功移动到新位置,请执行以下步骤:

  1. 验证新位置处是否存在队列数据库文件 Mail.que 和 Trn.chk。
  2. 验证新位置处是否存在事务日志文件 Trn.log、Trntmp.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb 文件。
  3. 确认原始位置是否没有队列数据库或事务日志文件。

有疑问吗? 在 Exchange 论坛中寻求帮助。 访问 Exchange Server 的论坛。