Professional Documents
Culture Documents
1 de 7
Menu
@mike_pfeiffer
As I mentioned earlier, the backups are stored on the F:\ drive on MBX1. On the Getting Started screen Ill select This server (MBX1) to specify the location of the backups and then Ill click Next:
I need to go back to the end of last year to retrieve the data Im interested in. You can see that on the Select Backup Date screen that the oldest successful backup I have within this time frame is from
December 9th of 2010. Ill select that date and click Next:
On the Select Recovery Type screen Ill select Applications and then click Next:
Restoring Mailbox Data from a Recovery Database in Exchange 2010 SP1 http://www.mikepfeiffer.net/2011/07/restoring-mailbox-data-from-a-re...
2 de 7
On the Select Application screen Ill select Exchange for the application to recover, then Ill click Next:
On the Specify Recovery Options screen, I want to leave my existing database alone and restore the backup to an alternate location. Then I can create a Recovery Database later using these files and
restore only specific mailbox data from the backup. I am going to set the restore location to E:\RecoveryDB since I know the E:\ drive has plenty of space. After that, Ill click Next:
At this point I am ready to restore the data, so on the Confirmation screen Ill hit the Recover button and the restore will begin immediately:
Restoring Mailbox Data from a Recovery Database in Exchange 2010 SP1 http://www.mikepfeiffer.net/2011/07/restoring-mailbox-data-from-a-re...
3 de 7
I can monitor the status of the restore on the Recovery Progress screen. As long as the status comes back as Completed I am in good shape:
As you can see from the above screen shot, the restore was successful, so I can click Close. I can navigate out to the E:\ drive to view the files:
Everything looks good so far, I just need to make a note of a couple things before I move on. Notice the directory structure in the above screen shot. The database was restored to a sub folder of the
recovery location specified during the restore. It restored the database in a folder called DB01 (which was the original folder name) in a sub directory called E_ since it was originally stored on the E:\
drive. I need to remember the path and the log generation prefix for the database, which is e01, as shown above. These details will be important for getting the database into consistency in the next step.
When reviewing the output, the database state will be reported as Dirty Shutdown:
What I will do next is perform a soft recovery to get the database consistent. Ill run the following command to do this:
eseutil /r e01 /d
Restoring Mailbox Data from a Recovery Database in Exchange 2010 SP1 http://www.mikepfeiffer.net/2011/07/restoring-mailbox-data-from-a-re...
4 de 7
The /r specifies that Im doing a soft recovery. The e01 is the log generation prefix for the database. Im using the /d switch without any arguments to specify the database path, which is in the current
directory. Since the logs are also located here, I dont need to use the /l switch, as it defaults to the current path. Once the operation has completed successfully, I can run eseutil again with the /mh switch
to verify the database is clean shutdown:
Now that my database has been restored and brought to a clean shutdown state I can create the Recovery Database.
Notice that Ive specified the path to the database and log files using the location where the database was restored. Also, the key to creating the Recovery database is to make sure you use the -Recovery
switch parameter, as shown above. You can see I got a warning message after running the command stating the Recovery database was created using an existing file, and that I need to ensure that the
database is in a clean shut down state before I try to mount it. I already did this in the previous step, so I can safely ignore this message and mount the database using the following command:
Mount-Database RecoveryDB
The Recovery database is now mounted, and Im ready to restore mailbox data.
If youre looking for a specific mailbox, you can filter the results using the following syntax:
Get-MailboxStatistics -Database RecoveryDB | ?{$_.DisplayName -like 'Mike*'}
You can see in this command Ive used the ? alias for the Where-Object cmdlet. Im using the -like operator to filter the results and only show me the mailboxes that start with Mike.
When restoring mailbox data from a Recovery database in Exchange 2010 SP1, we use the New-MailboxRestoreRequest cmdlet. When running this cmdlet, the source mailbox in the recovery database
needs to be identified using one of three possible values; the DisplayName, MailboxGUID, or LegacyExchangeDN values. Keep in mind that you cannot reference the source mailbox using the
Exchange Alias when performing a restore.
So, lets take a look at the restore process. Based on the previous commands I can see that there is a copy of my mailbox in the Recovery database. To do a complete restore of the mailbox data to the
original mailbox that is currently active in the production database Ill use the following command:
New-MailboxRestoreRequest -SourceDatabase RecoveryDB -SourceStoreMailbox 'Mike Pfeiffer' -TargetMailbox mpfeiffer
Depending on the size of the mailbox, it may take quite some time to perform the restore. I can keep tabs on the progress using the following one-liner:
Restoring Mailbox Data from a Recovery Database in Exchange 2010 SP1 http://www.mikepfeiffer.net/2011/07/restoring-mailbox-data-from-a-re...
5 de 7
Get-MailboxRestoreRequest | Get-MailboxRestoreRequestStatistics
Here you can see that there are two mailboxes with the same display name in the Recovery database. One has a DisconnectDate defined, meaning it is a disconnected mailbox, and the other one does not
which means it was the active mailbox in the database at the time of the backup. If you run into a scenario where there are multiple mailboxes in a database with the same display name, use the above
command to determine the MailboxGuid of each mailbox. You can then use this value to identify the correct mailbox when performing a restore.
New-MailboxRestoreRequest -SourceDatabase RecoveryDB -SourceStoreMailbox 4a1d2118-b8cc-456c-9fd9-cd9af1f549d0 -TargetMailbox ihill
The -IncludeFolders will accept a list of one or more mailbox folders. You can specify well-known folder names as well as personal folders using this parameter. Notice that the value needs to be
enclosed in hash marks (#). For example, if you wanted to restore only the contacts folder, use #Contacts#, or #Tasks# for the Tasks folder, and so on. For more details, check out the help for this
parameter in the TechNet documentation for the New-MailboxRestoreRequest cmdlet. If you simply want to restore a single root folder, check out the -SourceRootFolder parameter.
Obviously, youll need to ensure that the target mailbox has been archive enabled for this to work.
In this example, I am restoring the data from my mailbox in the recovery database to a sub-folder of the administrator mailbox called Restore. Heres a screen shot of the administrator mailbox after
running the above restore command:
Restoring Mailbox Data from a Recovery Database in Exchange 2010 SP1 http://www.mikepfeiffer.net/2011/07/restoring-mailbox-data-from-a-re...
6 de 7
Be careful when restoring to alternate mailboxes. If you omit the -TargetRootFolder parameter, the data will be restored and merged into the existing folders in the target mailbox. On the other hand,
that might be exactly what you want if so, just remove the -TargetRootFolder parameter.
Bulk Restores
You might find yourself in a situation where you need to restore data from all mailboxes in a recovery database. For example, lets say you need to restore the Contacts folder for all of your mailboxes. In
this case, you could use a foreach loop to iterate through each mailbox in the recovery database and restore that particular folder to the active mailboxes:
foreach($mailbox in Get-MailboxStatistics -Database RecoveryDB) {
New-MailboxRestoreRequest -SourceDatabase RecoveryDB -SourceStoreMailbox $mailbox.DisplayName -TargetMailbox $mailbox.DisplayName -SourceRootFolder Contacts
}
This might take a while; you can monitor the progress using the Get-MailboxRestoreRequest with the -Status parameter:
Get-MailboxRestoreRequest -Status Queued
As youve seen, there are a lot of steps and multiple options when it comes to restoring data from a recovery database. Obviously, this is not something you want to learn on the fly when a disaster
strikes. Id highly recommend documenting and testing your restore procedure on a regular basis.
Related Posts
Windows Server Backup with Volumes that Include Active and Passive Exchange Databases (1)
Performing Maintenance on DAG Members in Exchange 2010 SP1 (13)
Administrator Audit Log Reports in HTML Format Exchange 2010 SP1 (67)
Backing Up Exchange 2010 using Windows Server Backup (2)
Error: Couldnt find the Enterprise Organization Container when Creating a New Mailbox Export Request (11)
58 comments add one
Previous Comments
Comment
Next post: Testing Exchange Autodiscover with PowerShell and the EWS Managed API
Previous post: Microsoft MVP Award for 2011
Restoring Mailbox Data from a Recovery Database in Exchange 2010 SP1 http://www.mikepfeiffer.net/2011/07/restoring-mailbox-data-from-a-re...
7 de 7
Search
Recent Posts
Im Delivering a PowerShell Workshop at Exchange Connections 2013
Im Speaking at TechMentor 2013 in Las Vegas about Exchange Upgrades, Coexistence, and Hybrid Deployments
Quick Tip: View or Export Lync Response Group Agents via PowerShell
How To Add a Custom Holiday to an Exchange Calendar with PowerShell and the EWS Managed API
Restricting Access to Lync for Disabled Active Directory Users
Books
Amazon | Packt
Amazon | Packt