Exchange Server 2010 has a feature called Database Portability. This is the capability for a mailbox database from one Mailbox server to be mounted on another Mailbox server within the same organization.
In this article I will demonstrate how you can use Database Portability in a disaster recovery situation.
First we need to understand a few key points about Database Portability:
- the mailbox database can only be mounted on another Mailbox server within the same Exchange organization
- the mailbox database can’t be from an earlier version of Exchange Server
- the database can’t be a public folder database
In this example scenario a Mailbox server has failed, and another Mailbox server is available to mount the database from the failed server.
There are different approaches that could be taken instead of using Database Portability, such as:
- if the Mailbox server was in a Database Availability Group then the database may be able to be activated on another DAG member that already holds a replica of the database
- in some cases a Mailbox server recovery may be more appropriate
The first step is to get the database and log files onto the server where you want to mount them. This could be done by restoring them from backup, or by attaching the same storage that was on the old server to the new server.

Before we proceed further we need to check what shutdown state the database is in. Open the Exchange Management Shell and navigate to the folder containing the database file. Then run the following command to check the database state.
g:\Data\MB-HO-01>eseutil /mh MB-HO-01.edb | findstr "State:"
State: Dirty Shutdown
With a database in a dirty shutdown state, and all of the transaction log files available, we can perform a soft recovery of the database. This commits any uncommitted transaction logs into the database so that there is no data loss. If you don’t have the transaction logs, or your database is in a clean shutdown state, then you can skip this step.
From the folder that contains the transaction logs run the following command, replacing “E00″ with the log file prefix for your database.
F:\Logs\MB-HO-01>eseutil /r E00 /d G:\Data\MB-HO-01
Extensible Storage Engine Utilities for Microsoft(R) Exchange Server
Version 14.01
Copyright (C) Microsoft Corporation. All Rights Reserved.
Initiating RECOVERY mode...
Logfile base name: E00
Log files:
System files:
Database Directory: G:\Data\MB-HO-01
Performing soft recovery...
Restore Status (% complete)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
...................................................
Operation completed successfully in 1.938 seconds.
Note the use of the /d parameter to specify the location of the mailbox database file. This is required if it not in the same path as on the original server.
Create a new mailbox database on the Mailbox server you are using to mount the database. Specify paths for the transaction logs and database file that are different to the current location.
[PS] G:\>New-MailboxDatabase -Server esp-ho-ex2010a -Name MB-HO-01-Recovered -LogFolderPath F:\Logs\MB-HO-01-Recovered -EdbFilePath G:\Data\MB-HO-01-Recovered\MB-HO-01.edb Name Server Recovery ReplicationType ---- ------ -------- --------------- MB-HO-01-Recovered ESP-HO-EX2010A False None
Copy the database and log files from their current locations into the locations that you specified when creating the new mailbox database.

Mark the database as overwritable.
[PS] G:\>Set-MailboxDatabase MB-HO-01-Recovered -AllowFileRestore:$true
Now mount the mailbox database.
[PS] G:\>Mount-Database MB-HO-01-Recovered
At this stage we’ve got the mailbox successfully mounted, but the users with mailboxes on that database are still pointing to the old server and database name.
[PS] G:\>Get-Mailbox -Database MB-HO-01 Name Alias ServerName ProhibitSendQuota ---- ----- ---------- ----------------- Administrator Administrator esp-ho-ex2010b unlimited Alan.Reid Alan.Reid esp-ho-ex2010b unlimited Alex.Heyne Alex.Heyne esp-ho-ex2010b unlimited Aisha.Bhari Aisha.Bhari esp-ho-ex2010b unlimited Aleisha.Harrison Aleisha.Harrison esp-ho-ex2010b unlimited
So the final step is to update the attributes for those user accounts to point to the new mailbox database.
[PS] G:\>Get-Mailbox -Database MB-HO-01 | Set-Mailbox -Database MB-HO-01-Recovered Confirm Rehoming mailbox "exchangeserverpro.net/Users/Administrator" to database "MB-HO-01-Recovered". This operation will only modify the mailbox's Active Directory configuration. Be aware that the current mailbox content will become inaccessible to the user. [Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"): a
Now we can see that the user accounts have been updated with the new attribute.
[PS] G:\>Get-Mailbox -Database MB-HO-01-Recovered Name Alias ServerName ProhibitSendQuota ---- ----- ---------- ----------------- Administrator Administrator esp-ho-ex2010a unlimited Alan.Reid Alan.Reid esp-ho-ex2010a unlimited Alex.Heyne Alex.Heyne esp-ho-ex2010a unlimited Aisha.Bhari Aisha.Bhari esp-ho-ex2010a unlimited Aleisha.Harrison Aleisha.Harrison esp-ho-ex2010a unlimited
The users will now be able to connect to their mailboxes again under the following assumptions:
- The updated user account attributes may need to replicate through Active Directory
- Outlook 2007/2010 and Outlook Web App users will automatically connect to the new database
- Outlook 2003 clients will require a manual profile update to connect to the new database




Hello, Paul.
Thanks for the Tutorial, it’s very clear and well explained.
I don’t tried to do this kind of procedure on EX2010, but in 2007 I remember that we can use the Move-Mailbox with the -ConfigurationOnly parameter to point the Mailboxes to the new Database path.
It’s important to say that the -ConfigurationOnly was removed from the EX2010 version, and now we use the Set-Mailbox -Database (like you did in the last part of the text).
All the details were explained in this link:
http://blogs.technet.com/b/nawar/archive/2010/05/03/what-happened-to-configurationonly.aspx
This doesnt work when trying to recover the database! Or when moving a database from one server to anohter. All it does it create a new blank database (with no data) – called recovered!
How is this useful?
Robert
Hi Robert, I was doing it live while I wrote the article demonstrating it.
If you mount the database and have the paths configured correctly to point to the files you’ve copied over to the server, then it will mount that database. If not then it will likely create a new empty EDB file, which sounds like what has happened to you.
Sorry that worked perfectly! My apologies. I changed the database name (from labdatabase01.edb) to labdb01.edb – and then wondered why it was blank!
Thanks again!
Good to hear, glad its working for you now
Hi Paul,
Thanks for your article. However I have a question.
I tried to do that on dedicated Archive databases.
MDBAR01 transferred from server1 to server2 with a new name : MDBAR01-Recovered.
My problem is that they are only archive mailboxes on this DB.
So I cannot find how to set this archivemailboxes to be setted on MDBAR01-Recovered instead of MDBAR01.
Any idea ?
Thanks,
Raphaël
Hi Paul,
I have the same case as Raphael,
Our archive DB is on a SAN and it’s connected to the server EXCH1 via a iSCSI target,
we have switched the connection to server EXCH2, but the database status shows “ServiceDown”.
Do above steps apply also in that case? Is it necessary to do the final step “Rehoming” as this DB contains the personal archives, and how it will enable every personal archive to its right mailbox ?
Thank you for your help.
Actually I don’t know how different this process will be for archive mailboxes since I haven’t tested that scenario.
Hi Paul,
I have followed your steps, and at the end, I didn’t do the rehoming, as this mailbox DB is used for the archive, instead, I have changed these attributes manually from Active Directory of one test user :
attributes: “msExchArchiveDatabaseLink” to point the new DB and “msExchDisabledArchiveDatabaseLink” to point the old DB.
you might also change “msExchArchiveGUID” and “msExchDisabledArchiveGUID” and switch their values,
Connected again to the user mailbox and the Personal archive has open,
Thank you
Hi Omar,
Can you please let me know how to change the attributes. I am also going from this condition. Your help will be appreciated.
Thanks & Regards,
ZB
Hello Zeechan,
May be it’s a too late answer, but it could be helpfull for others too.
To see these attributes, from your Exchange server, open the ADSI Edit (Start > Admin Tools).
Once opened, if it’s not connected, right-click on the ADSI Edit from the left pane and select Connect, then enter your domain name and click OK.
Now your complete domain tree will be show in the left pane, expand and navigate to the OU where your user is, and right-click on the user and select Properties, there you can find all the attributes.
Hope this help.
Thanks
Thanks man it was really helpful
Hi Paul,
Really nice post very useful information. I have one query what if i lost my archive mailbox database. How to update attributes for those user accounts to point to the new archive mailbox database.
Thanks in Advance.
Regards,
ZB
Hi Robert, very good article. I have a question about Outlook 2003 (cached or not cached) clients: you say
“Outlook 2003 clients will require a manual profile update to connect to the new database”, but using separate CAS server, also Outlook 2003 clients use it so, moving in this way a database from one mailbox server to another mailbox server, of the same AD site (therefore the same CAS server for clients) does not change Outlook 2003 profile. Is it correct? Have you tested this scenario?
Thanks
Regards
David
Hi Paul, I wonder that what does “◾the mailbox database can only be mounted on another Mailbox server within the same Exchange organization” means???
In my scenario, my company have an exchange organization with domain name DOMAIN.com. But now, we want to shutdown this Exchange 2010 Organization and build a totally new exchange server 2010 organization wit the same domain name DOMAIN.com, the only thing we save is the Mailbox Database .edb file. So with your opinion, could I copy the .edb file from the OLD Mailbox server to an Storage device and copy, mount it on a NEW Mailbox server following your instruction.
Thanks and Regards !
Pham
An Exchange organization exists within an Active Directory forest. So it depends if your new domain is part of the same forest, or an entirely new forest, whether the domain is still part of the same Exchange organization.
If your domain is in a new forest, and therefore a new organization, then you can’t use database portability.
I will also stress that this is primarily a disaster recovery feature, not a migration method to get mailboxes from one server to another in a planned migration.
My Domain is in a new forest totally, it has no relationship with the old domain controller except that it has the same name: DOMAIN.com
So Could you help me to find an optimize migration solution?
In my point of view and from what I have search, these are steps that I will deploy:
1. Create mailbox or mail-enable existing user from .csv file using shell script
2. On OLD Mailbox server: Export mailbox database per user using New-MailboxExportRequest command.
3. On NEW Mailbox server: Import mailbox database per user using New-MailboxImportRequest command.
Did this solution is possible and optimize for my company’s scenario?
Thanks Paul so much
You can do a cross-forest migration instead of exporting/importing mailboxes like that, which may be a better approach depending on your environment.
Some more info:
http://blogs.technet.com/b/exchange/archive/2010/08/10/3410619.aspx
Thanks you so much Paul
for a drp setting ad intact, cas also intact. mailbox mounted following the process above. the challenge now is that cas in powershell could see mailbox recovered but not included in its mailbox
Please advice on what to do
Thank you
Benjamin
I don’t understand your scenario and question.