Applies to: Exchange Server 2010 SP3, Exchange Server 2010 SP2

Topic Last Modified: 2011-03-19

After a mailbox database is created, you can move it to another volume, folder, location, or path by using either the EMC or the Shell. For step-by-step instructions about how to move a mailbox database path, see Move the Database Path. That topic provides information about how to move a non-replicated mailbox database to another path.

If the mailbox database being moved is replicated to one or more mailbox database copies, you must follow the procedure in this topic to move the mailbox database path. All copies of a mailbox database must be located in the same path on each server that hosts a copy. For example, if database DB1 is located at C:\mountpoints\DB1 on server EX1, copies of DB1 on servers EX2, EX3, and so on, must also be located at C:\mountpoints\DB1.

Looking for other management tasks related to mailbox database copies? Check out Managing Mailbox Database Copies.

Prerequisites

  • To perform the move operation, the database must be temporarily dismounted, making it inaccessible to all users. If the database is currently dismounted, it isn't remounted upon completion.

  • To perform the move operation, replication for the database must be disabled for all copies. It's not enough to suspend replication; you must disable it by using the Remove-MailboxDatabaseCopy cmdlet to remove the database copies.

Use the Shell to move a replicated mailbox database to a new path

You need to be assigned permissions before you can perform this procedure. To see what permissions you need, see the "Mailbox database copies" entry in the High Availability Permissions topic.

Note:
You can't use the EMC to move a replicated mailbox database to a new path.
  1. Note any replay lag or truncation lag settings for all copies of the mailbox database being moved. You can obtain this information by using the Get-MailboxDatabase cmdlet, as shown in this example.

    Copy Code
    Get-MailboxDatabase DB1 | fl *lag*
    
  2. If circular logging is enabled for the database, it must be disabled before proceeding. You can disable circular logging for a mailbox database by using the Set-MailboxDatabase cmdlet, as shown in this example.

    Copy Code
    Set-MailboxDatabase DB1 -CircularLoggingEnabled $false
    
  3. Remove all mailbox database copies for the database being moved. For detailed steps, see Remove a Mailbox Database Copy. After all copies are removed, preserve the database and transaction log files from each server from which the database copy is being removed by moving them to another location. These files are being be preserved so the database copies to not require re-seeding after they have been re-added.

  4. Move the mailbox database path to the new location. For detailed steps, see Move the Database Path.

    Important:
    During the move operation, the database being moved must be dismounted. Until the move is complete, this process will cause an interruption in service and an outage for all users with mailboxes on the database being moved. After the move operation completes, the database is automatically mounted.
  5. Create the necessary folder structure on each Mailbox server that previously contained a passive copy of the moved mailbox database. For example, if you moved the database to C:\mountpoints\DB1, you must create this same path on each Mailbox server that will host a mailbox database copy.

  6. After creating the folder structure, move the passive copy of the mailbox database and its log stream to the new location. These are the files that were left from and preserved after Step 3. Repeat this process for each database copy that was removed in Step 3.

  7. Add all of the database copies that were removed in Step 3. For detailed steps, see Add a Mailbox Database Copy.

  8. On each server that contains a copy of the mailbox database being moved, run the following commands to stop and restart the content index services.

    Copy Code
    Net stop msftesql-Exchange
    Net start MSExchangeSearch
    
  9. Optionally, enable circular logging by using the Set-MailboxDatabase cmdlet, as shown in this example.

    Copy Code
    Set-MailboxDatabase DB1 -CircularLoggingEnabled $true
    
  10. Reconfigure any previously set values for replay lag time and truncation lag time by using the Set-MailboxDatabaseCopy cmdlet, as shown in this example.

    Copy Code
    Set-MailboxDatabaseCopy DB1\MBX2 -ReplayLagTime 00:15:00
    
  11. As each copy is added, we recommend that you verify the health and status of the copy prior to adding the next copy. You can verify the health and status by:

    1. Examining the event log for any error or warning events related to the database or the database copy.

    2. Using the Get-MailboxDatabaseCopyStatus cmdlet to check the health and status of continuous replication for the database copy.

    3. Using the Test-ReplicationHealth cmdlet to verify the health and status of the database availability group and continuous replication.

For detailed syntax and parameter information, see the following topics: