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
Una consulta. Puedo montar un respaldo de una base de datos de buzones sin eliminar el que está en produccion. Estando en diferentes ubicaciones. O necesariamente podria haber un inconveniente con el nombre? Ya que la BD actual y la restaurada tienen el mismo nombre?. Gracias.
Hi Paul, Is it possible to mount Exchange 2010 DB to Exchange 2013? Actually I have Exchange 2010 but that vm is continuously showing errors and working very slow. So I created a fresh VM and installed exchange 2013 on it. Now I want to simply dismount DB from exchange 2010 and copy DB and Logs from that old server to new Exchange server 2013 . Then I simple execute mount command. Can it be done?
The Real Person!
The Real Person!
No.
Wow, thank you so much Paul!! You really helped me so much with this article. Very well written and to the point. Thanks again and keep up the excellent work.
Hi,
I think one small step need to b added i.e. to rename the database as newly created database and then copy to final location
Thanks
mohammad
Hi Paul
I did the mailbox moves to the other server into a new DB. Now what I’m left with is the Arbitration mailboxes do I move these mailboxes aswell into the new DB?
The Real Person!
The Real Person!
If you want to be able to remove the old database, then yes you need to move all the mailboxes including the arbitration mailboxes.
Thanks Paul
Does it matter if the Build version of new Exchange 2013 SP1 (CU11) Server is higher than the server that we want to decommission which is running on Exchange 2013 SP1 in the same Org?
The Real Person!
The Real Person!
No.
And there is no SP1 CU11. SP1 is just another name for CU4.
Thanks Paul appreciated!
Hi Paul
Makes sense thanks again I will give it a try.
Thanks Paul
Won’t that affect the user’s outlook connectivity in the process?
The Real Person!
The Real Person!
Only during the final cutover, for a few minutes, and you can control the timing of that. The rest of the move process occurs online without any disruption to the user.
https://technet.microsoft.com/en-us/library/dd298174(v=exchg.141).aspx
Mailbox moves will be far less risky and disruptive than trying to use database portability.
Hi Paul
Thank you so much for the well written article. My question does the same steps apply to move a mailbox from one Exchange 2013 SP1 to another Exchange 2013 SP1 server?
Your reply will be highly appreciated.
The Real Person!
The Real Person!
Yes, database portability from 2013 to 2013 is also possible. It’s not supposed to be a way to *migrate* from one server to another though, if that’s what you mean.
Thank you so much Paul.
Actually what we want to do is to move the mailbox from a 2013 server to another 2013 server within the same organisation and decommission the other server.
Will it still work in this case?
The Real Person!
The Real Person!
Don’t use database portability for that. Do mailbox moves instead.
Hi,
It is an excellent guide! Thank You very much! You saved my life 🙂
Hi Paul – thanks for the great article, it walked me through everything I needed to do to get our environment restored.
This DR event is unique in that the unavailable Exchange server will be brought back online in the next few days (city-wide power outage.) We recovered Exchange from a backup – unfortunately the backup was a business day behind.
My question is, when the Exchange server comes back online what would be the best method to merge the gap of data between the restored version of the database and the database of the server that was offline? Would a Recovery Database work best for this? Is there any danger of bringing that old server online, as it still thinks it is hosting those users mailboxes? We will want to also move the mailbox database back to the original server.
Thanks for any insight you can provide.
Paul – haven’t heard back from you (still awaiting moderation.) I have asked this question here (https://social.technet.microsoft.com/Forums/en-US/269b74bb-9f41-4597-b51f-a8e620b39093/exchange-2010-mail-database-recovery-after-database-portability-applied?forum=exchange2010), which may better help you understand my situation. Thanks for any assistance you can provide.
The Real Person!
The Real Person!
Yes, a recovery database is the solution. You can then run mailbox restore requests as needed to get data out of the RDB into the active mailboxes.
It doesn’t matter what the old server “thinks”. Mailbox attributes are stored on mailbox-enabled user objects. The database or server won’t come online and override those.
Excellent guide. Very detailed. This saved a DR test with a failed DAG node. I took the edb after removing the dag from asdiedit as last resort still didn’t allow me to mount the local db. I resorted to this method and it worked well. Allowed me to mount the local edb from the dag as a new database.
Now we plan to move away from the DAG for DR as I don’t think its designed for that sort of scenario.
Thanks!
Thanks a lot for your immediate response.
1.)One more thing i need to clarify ,On this article you are running a command (Get-Mailbox -Database MB-HO-01) , and that command is giving you an output with list of mailboxes available on that database .I just wanted to clarify how that command is giving an output for unavailable database? and on our next step you are redirecting the mailboxes from that crashed database to the newly created database
Because why i am asking you know , In our case already the server which is holding that database is already crashed . Will that command is reproducing the output by utilizing the database entry which is present on configuration partition of Active directory ?.Please correct me if i am wrong .
2.)Could you please share me your article which states about Dial Tone Portability in exchange 2010 ?
Thanks
S.Nithyanandham
Hi paul ,
Thanks a lot for a wonderful article.
Just i wanted to clarify few of my doubts, Do i need to create the new database with the .edb file prefix name as same as the .edb file name which is present on LUN or it is going to be restored from backup ?
Same time on this article you have mentioned like below ….
Copy the database and log files from their current locations into the locations that you specified when creating the new mailbox database.
As per my knowledge , what i understood is – we should have to overwrite the newly created .edb file and log files with the restored .edb file and log files .Please Correct me if i am wrong .
Could you please share me your article link which states about Dial Tone Portability in exchange 2010 ?
The Real Person!
The Real Person!
Yes the file names need to match.
Hi Paul,
In he process of testing your post when I try to do the “>Get-Mailbox -Database ” I get a prompt as response, any clue about why I cant see the content of the DB ?
FYI : DB is in clean shutdown state.
Thanks in advance!!!
The Real Person!
The Real Person!
What prompt do you get?
Hi Paul
thank you so much for detailed steps.. your tutorial is way much better and easier to understand compared to MS.technet tutorial which is not reader friendly (most of the time)
Thank again 🙂
Regards
Jason
Thank you so much!
Writing this saved my exchange server… we only have the logs and dbe file to go off of.
I did have to force the dbe file to transition to clean shutdown state, which meant that we lost some info.
I than found that I couldn’t re-link everyone’s email accounts… something in AD caused it to say it was ‘an invalid primary mailbox’.
What I did was
Get-Mailbox -ReadFromDomainController | Set-Mailbox -Database RecoveredExchangeDB
And all is well again!
Hi Paul,
i have big trouble. My old SBS 2011 is completely crashed and i have only the .mdb. Is there a way to recover the old Exchange-Data to the new SBS 2011 Installation with same name/users/domain etc.pp.?
The Real Person!
The Real Person!
Database portability works if the server(s) are part of the same Exchange organization. So you could try it, if you’ve recovered your AD forest and Exchange org, and see how it goes.
Otherwise you’d need to look at third party recovery tools like Ontrack Powercontrols. Beware though, that sector of the software market is full of low quality, scammy products that may or may not work. Ontrack is the only one I’ve personally ever used and it worked for me.
sorry for that many comments. My goal is to move mailbox to another server in organisation. Now i see that my “FROM” server is hosting my database (that is umnounted). And TO server is hosting my new database, that is mounted. The question is about content of mailbox. Is it will be missed now ? can i delete safely database from my FROM server ?
The Real Person!
The Real Person!
If you just want to move one mailbox this article about database portability as a disaster recovery option is not the process you should follow.
i see now. Ok. Maybe you can sujjest something about moving mailbox databases between servers in organization ? as for googling this only pointing for this portability … 🙁
btw. thanks for a great articles. It is really awesome.
The Real Person!
The Real Person!
Database portability is a method for moving entire databases between servers, however I only consider it to be a disaster recovery option not an option for planned migrations.
If you want to move mailboxes from one server to another you should do that with normal mailbox move requests.
More reading:
https://www.practical365.com/move-mailboxes-exchange-server-2010/
after this manipulation non cached mode is now working for me …
it is says that my mailbox was moved to temporary location. and to choose if to use a new location or previous. both not connecting
how about the content of mailboxes ? how it knows that it must be copied to a new database ? or it will be missed, like it warns in set-mailbox command ?
Thank you for the article. I followed the steps and have ben able to mount and recover the database on another server. Users are rehomed and email is flowing, but now there are a bunch of “stuck” completed move requests listed. I can’t clear the move requests. Error says “Unable to make connection to server…”. How can I clean up these completed move requestes now that the source server is gone?
The Real Person!
The Real Person!
Interesting. So these move requests existed before the database recovery was performed?
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
The Real Person!
The Real Person!
I don’t understand your scenario and question.
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
The Real Person!
The Real Person!
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 🙂
The Real Person!
The Real Person!
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 🙂
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,
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
Pingback: Message Stuck in ‘Defunct’ SMTP Queue « Just A UC Guy
Thanks man it was really helpful
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.
The Real Person!
The Real Person!
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
Paul, et al:
… in a DB portability scenario for recovery, how are in-place/online archives handled?
I have successfully used this scenario for primary mailbox DB’s but the in-place archive does not re-home.
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
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!
The Real Person!
The Real Person!
Good to hear, glad its working for you now 🙂
Hello Robert I followed all the steps indicated in the tutorial but in the end I got the empty DB.
Can you please tell me what you did to make it work for you?
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
The Real Person!
The Real Person!
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.
Do i need to rename the original database to what i called the new database? since the original database does not include the word “recovery”
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
Hi Lucas,
The command “ConfigurationOnly” isn’t wiped out entirely from Exchange 2010. It’s still there for DAG for cluster purpose, and continues to 2013.
Ref: https://blogs.technet.microsoft.com/timmcmic/2013/09/23/exchange-2010-remove-databaseavailabilitygroupserverconfigurationonly-does-not-evict-the-member-from-the-cluster/