In Exchange 2007 and Exchange 2010, added functionality in Move-Mailbox (and New-MoveRequest), along with the support of online mailbox moves, have reduced the requirement of moving entire databases around very much (it’s easier to just move all the mailboxes in the mailbox database to a new mailbox database in the proper location).
But sometimes – you just need to do it. Even with the downtime it may cause.
You CAN do it from the Exchange Management Console or from the Exchange Management Shell. However, the provided status information is worthless. You have no idea how far along the data movement is. What I recommend instead is this process:
-
Dismount the mailbox database
-
Use ROBOCOPY to copy the database file from the old location to the new location
-
Use Move-DatabasePath -ConfigurationOnly to update Exchange with the new location of the database
-
Mount the mailbox database
In pseudo-PowerShell:
-
dismount-database <dbname>
-
robocopy <src-dir> <dest-dir> <dbname>.edb
-
move-DatabasePath -Id <dbname> -ConfigurationOnly -EDBFilePath <new-full-path-to-edb>
-
mount-database <dbname>
ROBOCOPY provides excellent information as to the status of a filecopy.
Also note that “ESEUTIL /y” is a good solution for copying large files as well. It provides respectable filecopy status information.
Until next time…
If there are things you would like to see written about, please let me know.
Edit November 22, 2010 – I’m extremely embarassed. In the original version of this post I used “unmount-database” (which doesn’t exist, of course) instead of “dismount-database”. Thankfully, only a few dozen people pointed out my error to me.
Follow me on twitter! : @EssentialExch