更改队列数据库在 Exchange Server 中的位置

Exchange Server使用可扩展存储引擎 (ESE) 数据库来存储队列消息。 所有不同的队列都存储在一个 ESE 数据库中。 Exchange 邮箱服务器和边缘传输服务器上存在队列。 有关队列的详细信息,请参阅 队列中的队列和消息

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

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

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

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

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

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

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

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

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

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

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

  • 队列数据库和事务日志的文件夹需要以下权限:

    • 网络服务:完全控制

    • 系统:完全控制

    • 管理员:完全控制

      如果该文件夹不存在,但父文件夹具有这些权限,则会自动创建新文件夹。

  • 在 Exchange 服务器上的 Exchange XML 应用程序配置文件(例如,安装 Exchange CU 时,将 覆盖 web.config文件或EdgeTransport.exe.config文件) )中所做的任何自定义 Exchange 或 Internet 信息服务器 (IIS () 设置。 请务必保存此信息,以便在安装后轻松重新应用设置。 安装 Exchange CU 后,需要重新配置这些设置。

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

  • 有疑问吗? 请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange ServerExchange OnlineExchange Online Protection

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

  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 中创建新的队列数据库和事务日志,请使用以下值:

    <add key="QueueDatabasePath" value="D:\Queue\QueueDB" />
    <add key="QueueDatabaseLoggingPath" value="D:\Queue\QueueDB" />
    

    完成后,保存并关闭EdgeTransport.exe.config文件。

  4. 通过运行以下命令重启 Exchange 传输服务:

    net stop MSExchangeTransport && net start MSExchangeTransport
    

如何知道操作成功?

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

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

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

  3. 如果在启动 Exchange 传输服务后可以从旧位置删除旧队列数据库和事务日志文件,则不再使用旧队列数据库。

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

注意

还有一个用于移动队列数据库和事务日志的脚本,可以在 %ExchangeInstallPath%Scripts 文件夹中找到该脚本,该脚本称为Move-TransportDatabase.ps1。 必须指定以下参数:queueDatabasePath、queueDatabaseLoggingPath、iPFilterDatabasePath、iPFilterDatabaseLoggingPath 和 temporaryStoragePath。

尽管需要移动现有队列数据库以保留其中任何未传递的消息,但通常不需要移动现有事务日志,因为:

  • 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,请使用以下值:

    <add key="QueueDatabasePath" value="D:\Queue\QueueDB" />
    <add key="QueueDatabaseLoggingPath" value="D:\Queue\QueueDB" />
    

    完成后,保存并关闭EdgeTransport.exe.config文件。

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

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

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

  7. 运行以下命令,启动 Exchange 传输服务:

    net start MSExchangeTransport
    

如何知道操作成功?

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

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

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

  3. 验证旧位置中没有队列数据库或事务日志文件。