如何更改队列数据库的位置

 

适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2009-01-27

队列是临时存放等待进入下一个处理阶段的邮件的位置。每个队列代表传输服务器按照特定顺序处理的逻辑邮件集。

Microsoft Exchange Server 2007 使用可扩展存储引擎 (ESE) 数据库存储队列邮件。ESE 以前称为 JET,该方法定义对 Exchange Server 中的基础数据库结果的低级 API。所有不同的队列都存储在一个 ESE 数据库中。只有已安装集线器传输服务器角色或边缘传输服务器角色的服务器上才有队列。

开始之前

若要执行下列步骤,必须为您使用的帐户委派下列角色:

  • Exchange Server 管理员角色和目标服务器的本地管理员组

若要在安装了边缘传输服务器角色的计算机上执行以下步骤,必须使用作为该计算机上的本地 Administrators 组成员的帐户进行登录。

有关管理 Microsoft Exchange Server 2007 所需的权限、角色委派以及权利的详细信息,请参阅权限注意事项

更改队列数据库的位置

队列数据库的位置由 EdgeTransport.exe.config 应用程序配置文件中的 QueueDatabasePath 参数控制,该文件位于 C:\Program Files\Microsoft\Exchange Server\Bin 目录中。您可以使用以下两种方法更改队列数据库的位置:

  • 使用 Move-TransportDatabase.ps1 脚本

    Exchange 2007 Service Pack 1 (SP1) 提供了一个新脚本,您可以使用此脚本更改传输数据库文件以及事务日志文件的位置。此脚本还可以将数据库文件移动到指定的新位置。使用 Move-TransportDatabase.ps1 脚本移动数据库文件时,考虑下列事项十分重要:

    • 如果目标驱动器与源驱动器不同,则目标驱动器上必须具有足够的空间。该脚本需要 2 GB 再加上移动现有数据库文件或事务日志文件所需的空间。

    • QueueDatabasePath 参数值与 IPFilterDatabasePath 参数值不得相同。

    • QueueDatabaseLoggingPath 参数值与 IPFilterDatabaseLoggingPath 参数值不得相同。

    • 如果目标路径不存在,则该脚本将自动创建相应的路径。

    • 现有 EdgeTransport.exe.config 文件自动另存为 EdgeTransport.exe.config.yyyyMMddHHmmss.old

  • 手动移动数据库文件

    尽管建议您使用 Move-TransportDatabase.ps1 脚本移动传输数据库文件,但您仍可手动移动数据库文件。以下列表说明在更改队列数据库的位置时要考虑的某些重要事项:

    • 如果目标目录不存在,那么,如果父目录应用了下列权限,就会创建该目标目录:

      网络服务:完全控制

      系统:完全控制

      管理员:完全控制

    • 现有的队列数据库文件 Mail.que and Trn.chk 未移动。保存 EdgeTransport.exe.config 应用程序配置文件并重新启动 Microsoft Exchange 传输服务后,将在新位置新建队列数据库文件。现有的数据库文件将保留在旧位置。但是,不再使用这些数据库文件。

    • 如果要更改队列数据库的位置,但要复用现有的队列数据库文件,则必须在停止 Microsoft Exchange 传输服务后移动或复制数据库文件。

将队列数据库移动到新位置

使用 Move-TransportDatabase.ps1 脚本将队列数据库移动到新位置

  1. 启动 Exchange 命令行管理程序。

  2. 在命令提示符下,运行以下命令。使用相应路径(例如,E:\Exchange\Transport\Queue.)替换 <destination path>。

    Move-TransportDatabase.ps1 -QueueDatabasePath: <destination path> 
    

在新位置手动新建队列数据库

在新位置新建队列数据库

  1. 使用记事本打开以下文件:

    C:\Program Files\Microsoft\Exchange Server\Bin\EdgeTransport.exe.config。

  2. 修改 <appSettings> 部分中的以下行:

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

    例如,要在位置“C:\Queue\QueueDB”为事务日志新建位置,请按以下方式修改 QueueDatabasePath 参数:

    <add key="QueueDatabasePath" value="C:\Queue\QueueDB" />
    
  3. 保存并关闭 EdgeTransport.exe.config 文件。

  4. 重新启动 Microsoft Exchange 传输服务。

  5. 验证是否已在新位置新建文件 Mail.que 和 Trn.chk。

  6. 从原始位置删除不使用的文件 Mail.que 和 Trn.chk。

在新位置手动复用现有的队列数据库

在新位置复用现有的队列数据库

  1. 创建用于保存队列数据库的目录。确保向该目录应用适当的权限。

  2. 使用记事本打开以下文件:C:\Program Files\Microsoft\Exchange Server\Bin\EdgeTransport.exe.config。

  3. 修改 <appSettings> 部分中的以下行:

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

    例如,若要将位置更改为“C:\Queue\QueueDB”,请按以下方式修改 QueueDatabasePath 参数:

    <add key="QueueDatabasePath" value="C:\Queue\QueueDB" />
    
  4. 保存并关闭 EdgeTransport.exe.config 文件。

  5. 停止 Microsoft Exchange 传输服务。

  6. 将文件 Mail.que 和 Trn.chk 从原始位置复制到新位置。

  7. 启动 Microsoft Exchange 传输服务。

  8. 从原始位置删除不使用的文件 Mail.que 和 Trn.chk。

更改队列数据库事务日志的位置

队列数据库事务日志的位置由 EdgeTransport.exe.config 应用程序配置文件中的 QueueDatabaseLoggingPath 参数控制。您可以使用以下两种方法更改事务日志文件的位置:

  • 使用 Move-TransportDatabase.ps1 脚本。

    Exchange 2007 Service Pack 1 (SP1) 提供了一个新脚本,您可以使用此脚本更改传输数据库文件以及事务日志文件的位置。此脚本还可以将事务日志文件移动到指定的新位置。以下列表列出了使用 Move-TransportDatabase.ps1 脚本移动数据库文件时要考虑的一些重要事项:

    • 如果目标驱动器与源驱动器不同,则目标驱动器上必须具有足够的空间。该脚本需要 2 GB 再加上移动现有数据库文件或事务日志文件所需的空间。

    • QueueDatabasePath 参数值与 IPFilterDatabasePath 参数值不得相同。

    • QueueDatabaseLoggingPath 参数值与 IPFilterDatabaseLoggingPath 参数值不得相同。

    • 如果目标路径不存在,则该脚本将自动创建相应的路径。

    • 现有 EdgeTransport.exe.config 文件自动另存为 EdgeTransport.exe.config.yyyyMMddHHmmss.old

  • 手动移动数据库文件

    尽管建议您使用 Move-TransportDatabase.ps1 脚本移动传输事务日志文件,但您仍可手动移动这些文件。

    以下列表说明与更改队列数据库事务日志位置有关的某些要点:

    • 如果目标目录不存在,那么,如果父目录应用了下列权限,就会创建该目标目录:

      网络服务:完全控制

      系统:完全控制

      管理员:完全控制

    • 现有的队列数据库事务日志文件 Trn.log、Trntmp.log、Trnnnn.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb 未移动。保存 EdgeTransport.exe.config 应用程序配置文件并重新启动 Microsoft Exchange 传输服务后,将在新位置新建队列数据库事务日志。现有的事务日志文件将保留在旧位置。但是,不再使用这些数据库文件。

    note注意:
    启动 Microsoft Exchange 传输服务时,将使用 Temp.edb 验证队列数据库架构。尽管 Temp.edb 不是事务日志文件,但它保留在与事务日志文件相同的位置。

将事务日志文件移动到新位置

使用 Move-TransportDatabase.ps1 脚本将事务日志文件移动到新位置

  1. 启动 Exchange 命令行管理程序。

  2. 在命令提示符下,运行以下命令。使用相应路径(例如,E:\Exchange\Transport\Queue.)替换 <destination path>。

    Move-TransportDatabase.ps1 -QueueDatabaseLoggingPath: <destination path>
    

在新位置手动新建队列事务日志

在新位置新建队列数据库事务日志

  1. 使用记事本打开以下文件:

    C:\Program Files\Microsoft\Exchange Server\Bin\EdgeTransport.exe.config。

  2. 修改 <appSettings> 部分中的以下行:

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

    例如,若要在位置“C:\Queue\QueueLogs”新建队列数据库,请按以下方式修改 QueueDatabaseLoggingPath 参数:

    <add key="QueueDatabaseLoggingPath" value="C:\Queue\QueueLogs" />
    
  3. 保存并关闭 EdgeTransport.exe.config 文件。

  4. 重新启动 Microsoft Exchange 传输服务。

  5. 验证是否已在新位置新建文件 Trn.log、Trntmp.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb。

  6. 从原始位置删除不使用的文件 Trn.log、Trntmp.log、Trnnnn.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb。

在新位置手动复用现有的队列事务日志

正常情况下,不必要在新位置复用现有的事务日志。正常关闭 Microsoft Exchange 传输服务会将所有未提交的事务日志条目提交到队列数据库。将使用循环日志记录。因此,包含以前提交的数据库更改的事务日志将不保留。仅当出现未正常关闭 Microsoft Exchange 传输服务,或者出现硬盘驱动器故障的灾难恢复情况时,才需要还原并重新定位现有的队列数据库及其现有的事务日志。

在新位置复用现有的队列数据库事务日志

  1. 创建用于保存队列数据库事务日志的目录。确保向该目录应用适当的权限。

  2. 使用记事本打开以下文件:C:\Program Files\Microsoft\Exchange Server\Bin\EdgeTransport.exe.config。

  3. 修改 <appSettings> 部分中的以下行:

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

    例如,若要将位置更改为“C:\Queue\QueueLogs”,请按以下方式修改 QueueDatabaseLoggingPath 参数:

    <add key="QueueDatabaseLoggingPath" value="C:\Queue\QueueLogs" />
    
  4. 保存并关闭 EdgeTransport.exe.config 文件。

  5. 停止 Microsoft Exchange 传输服务。

  6. 将现有文件 Trn.log、Trntmp.log、Trnnnnn.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb 复制到新位置。

  7. 启动 Microsoft Exchange 传输服务。

  8. 从原始位置删除不使用的文件 Trn.log、Trntmp.log、Trnnnnn.log、Trnres00001.jrs、Trnres00002.jrs 和 Temp.edb。

详细信息

有关队列数据库的详细信息,请参阅管理队列数据库

默认情况下,Move-TransportDatabase.ps1 脚本位于基于 Exchange 2007 SP1 的计算机中的以下文件夹内:

%ProgramFiles%\Microsoft\Exchange Server\Scripts

此脚本接受下列参数:

  • -QueueDatabasePath

  • -QueueDatabaseLoggingPath

  • -IPFilterDatabasePath

  • -IPFilterDatabaseLoggingPath

  • -TemporaryStoragePath

要移动传输数据库或事务日志文件,该脚本将执行以下操作:

  1. 脚本验证参数值。

    • 如果指定的目标路径与源路径相同,脚本将跳过验证操作。

    • QueueDatabasePathIPFilterDatabasePath 的值不得相同。这是因为这两个位置都包含 Trn.chk 文件。

    • QueueDatabaseLoggingPathIPFilterDatabaseLoggingPath 的值不得相同。这是因为这些日志文件具有相同的文件名。

    • 脚本验证是否已提供 2 GB 再加上等于要复制文件大小的空间。例如,必须提供的空间等于 2 GB 再加上 Mail.que、Trn.chk 和 Ipfiltering.edb 文件的大小。

    note注意:
    如果目标路径与源文件位于相同的驱动器中,则脚本将跳过文件空间验证。
  2. 脚本根据需要创建文件夹。

    • 脚本根据需要创建目标文件夹。

    • 如果 Administrators 组、本地系统帐户或网络服务帐户对目标路径没有完全控制权限,则脚本将添加这些权限。

    • 如果 Administrators 组、本地系统帐户或网络服务帐户对目标路径具有拒绝访问规则,则脚本将生成警告消息。在这种情况下,脚本不会退出。

  3. 脚本停止 MSExchangeTransport 服务。

  4. 脚本备份 EdgeTransport.exe.config 文件并将其命名为 EdgeTransport.exe.config.yyyyMMddHHmmss.old。

  5. 针对使用的命令,脚本根据需要将下列文件移动到目标路径:

    • QueueDatabasePath:Mail.que、Trn.chk

    • IPFilterDatabasePath:IPFiltering.edb、Trn.chk

    • Logging path:Trn*.log、Trnres00001.jrs、Trnres00002.jrs、Temp.edb

  6. 脚本更新 EdgeTransport.exe.config 文件,然后将所做更改保存到该文件。

  7. 脚本启动 MSExchangeTransport 服务。