When you’re operating an Exchange Server 2016 database availability group you’re going to eventually encounter a failed database copy. The most likely cause is a storage hardware issue, but there are many other ways that database copies can fail.

A failed database will show up in the output of Get-MailboxDatabaseCopyStatus, for example:

[PS] C:\>Get-MailboxDatabaseCopyStatus * | sort name

Name              Status             CopyQueueLength ReplayQueueLength LastInspectedLogTime   ContentIndexState
----              ------             --------------- ----------------- --------------------   -----------------
DB05\EX2016SRV1   Mounted            0               0                                        Healthy
DB05\EX2016SRV2   Healthy            0               0                 11/18/2015 10:45:39 PM Healthy
DB06\EX2016SRV1   Healthy            0               0                 11/18/2015 10:36:11 PM Healthy
DB06\EX2016SRV2   Mounted            0               0                                        Healthy
DB07\EX2016SRV1   Mounted            0               0                                        Healthy
DB07\EX2016SRV2   Healthy            0               0                 11/18/2015 10:46:44 PM Healthy
DB08\EX2016SRV1   FailedAndSuspended 27              2                 11/18/2015 4:50:59 PM  Suspended
DB08\EX2016SRV2   Mounted            0               0                                        Healthy
Running the command yourself is useful but not very proactive. If you don’t have a monitoring system in place that can detect failed database copies then you can use my Test-ExchangeServerHealth.ps1 PowerShell script to keep an eye on things for you.

Recovery is a manual process if you are not using Autoreseed in your deployment. Once you’ve fixed the underlying issue (e.g. replaced the failed disk) you can reseed the database copy.

[PS] C:\>Suspend-MailboxDatabaseCopy DB08\EX2016SRV1

[PS] C:\>Update-MailboxDatabaseCopy DB08\EX2016SRV1

If the database and log paths on the server you’re reseeding to already contain files you can add the -DeleteExistingFiles switch to overwrite them.

[PS] C:\>Update-MailboxDatabaseCopy DB08\EX2016SRV1 -DeleteExistingFiles

Also, by default the source for the reseed will be the database copy that is currently active. If you’d prefer to reseed from a different server that may be closer, and therefore faster to reseed from, then you can add the -SourceServer parameter as well.

[PS] C:\>Update-MailboxDatabaseCopy DB08\EX2016SRV1 -SourceServer EX2016SRV2

The duration of the reseed operation will depend on the size of the database and transaction log data that needs to be copied across the network to the server.

After the reseed is complete the database copy should be back to a healthy state and will resume continuous replication.

[adrotate banner=”49″]

About the Author

Paul Cunningham

Paul is a former Microsoft MVP for Office Apps and Services. He works as a consultant, writer, and trainer specializing in Office 365 and Exchange Server. Paul no longer writes for Practical365.com.

Comments

  1. hosang

    The Real Person!

    Author hosang acts as a real person and verified as not a bot.
    Passed all tests against spam bots. Anti-Spam by CleanTalk.

    The Real Person!

    Author hosang acts as a real person and verified as not a bot.
    Passed all tests against spam bots. Anti-Spam by CleanTalk.

    The seeding operation failed. Error: An error occurred while running prerequisite checks. Error: Target database file ‘D:\EXDB4\EXDB4.edb’ already exists. You must delete this database file before seeding can be performed. You
    can use the -DeleteExistingFiles or -SafeDeleteExistingFiles parameter of the Update-MailboxDatabaseCopy cmdlet to delete the database file and then perform seeding. [Database: EXDB4, Server: exch01.xxx.local]
    + CategoryInfo : InvalidOperation: (EXDB4:String) [Update-MailboxDatabaseCopy], SeedPrepareException
    + FullyQualifiedErrorId : [Server=EXCH02,RequestId=e31ade2d-bd04-43e7-8dff-ab0ffb85b7f0,TimeStamp=8/31/2024 3:44:33 AM] [FailureCategory=Cmdlet-SeedPrepareException] 1DBF88D6,Microsoft.Exchange.Management.SystemConfigurationTa
    sks.UpdateDatabaseCopy
    + PSComputerName : exch02.xxxx.local

    i try to delete existing file but still error,

  2. Behrouz Amiri

    I have an interesting issue that drove me crazy.
    I have a DAG with 4 members. One of my databases with 1 active copy and 3 passive copy on other servers, all are in a failed and suspended state (one is dismounted)
    CopyStatus shows the DB is trying to get mounted on exch1 and a few minutes later it becomes failed and suspended and is mounting on exch2. And this seems to be a loop.
    Errors says it’s failed after 3 reseed.
    How is that Even possible that 4copies of a database fails at the same time!?
    I also tried ESEUTIL.EXE, which also end up in errors and crashes on all dismounted/removed .edb files, both HardRepair and SoftRepair..
    It is a data loss now.. with 4 copies!! Any Idea or guess? I just don’t want this happen again

    1. Hisham Nasur

      Restore from backup

  3. Evan

    how about the mailbox name has a space, this command doesn’t work

    like : Update-MailboxDatabase -Identity “Database n 1″\mailbox1

    How to make this work?

    Thank you

    1. Chris

      Do it like this: Update-MailboxDatabase -Identity “Database n 1\mailbox1″

  4. Ant

    Hi Paul,

    For the initial copy of a database, is downtime required or will mailboxes continue to service whilst the initial copy is running to a secondary server?

  5. Dallan

    I am having an interesting issue. When reseeding a database, after a minute or so I get an error saying that the connection was closed by the source server. any suggestions?

  6. Ronald

    Thanks for the info. I have tried this multiple times but keep running into the Error: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. after the copying has been going on for a few hours. I have check to see if we are having any network issues or if the firewall is causing the problem but I can’t find anything showing a connection being dropped.

    1. Avatar photo

      If you have a firewall or any type of WAN accelerator or network device that is doing packet inspection or filtering of traffic, that could very easily break the replication. Add a bypass for the Exchange server IP’s to talk to each other completely unimpeded.

  7. Barry

    Thanks for the great article.

    One thing it doesn’t seem to mention trying (unless it’s assumed that this has already been attempted prior to getting to this article) is running Suspend-MailboxDatabaseCopy followed by Resume-MailboxDatabaseCopy.

    This has worked on one of my databases, seemingly successfully.

    Unfortunately by the time I’d considered trying this I’d already started a full reseed of the other failed DB, so that’s still in the middle of a lengthy copy process.

  8. VVV

    Thx for all the great articles , Paul. It is really much appreciated! Please keep it up!

  9. harry

    thank you for info. I had issue once I created a brand new mailbox database, waiting for AD replication… the new mailbox status heathy and content index status is heathy. However, after I add a mailbox database copy of the newly created database, waiting for replication, the new database copy on the secondary server status is healthy, content index status is failedandsuspended. I use update-mailboxdatabasecopy db1 -catalogOnly -sourceserver server1 several times, still no help. even try to reseed update-mailboxdatabasecopy db1 -sourceserver server1 –DeleteExistingFiles , it doesn’t help either, I even removed the mailboxdatabase copy completed, re-add it again with no luck. I run Exchange 2016 CU2. I have multiple servers, I tried to add the DB1 to server3 with the same issue. Any idea? TIA

    1. Dallan

      Give it a bit. It should show up as healthy after a few hours.

  10. SAM

    Thanks for the information. How many database can be reseeded at one time.

    1. Avatar photo

      Each database can seed/reseed one copy at a time.

      If you have one database, say DB1, you can seed one copy of that database at a time. If you have 4 copies of DB1, you need to seed or reseed each of them one at a time.

      If you have two or more databases, say DB1 and DB2, each of those databases can seed a copy at the same time.

Leave a Reply