During a migration from Exchange 2003 to Exchange 2007 many find that having 4 maximum thread transactions (default in using the Exchange Management Console) happening simultaneously is a bottleneck. Using powershell, one can increase the maximum number above 4 and save time and effort in the process.
Some things to keep in mind during the migration:
- Tons of transaction logs will be generated and won’t be wiped until a backup happens…make sure you have space on your transaction log disks.
- Make sure your Mailbox Server has plenty of physical resources available to use during the move…RAM is a specific concern. Always overshoot your estimates on how much RAM you need.
- Error reporting in the shell isn’t as intuitive as you’ll get using the EMC (Exchange Management Console)
My specific environment was moving from a single backend 2003 server to a single 2007 mailbox server. The cmdlet that is posted can be used to move a mailbox database/storagegroup from one physical server to a another database/storagegroup on a different physical server. I’ll go through what each section of the cmdlet means.
Get-Mailbox –Database “2003ServerName\StorageGroupName\DatabaseName” | Move-Mailbox –TargetDatabase “2007ServerName\StorageGroup\Database” –MaxThreads 10
The command above should be executed in powershell on your 2007 Mailbox Database Server. The Get-Mailbox -Database command will tell Exchange where the mailboxes you are moving are coming from. You then Move-Mailbox to a target database on the 2007 Mailbox Server. The last portion of the command tells the command to increase the max threads of the command from 4 to 10. Please make sure that you substitute in the server names, storage group names, and database names appropriately.
Remember that this will only move one database at a time…if you are like me, you like to take small steps in the process and verify that things look good after each small step. Hopefully, this helps your migration take a little less time.