Applies to: Exchange Server 2010 SP3
Topic Last Modified: 2012-10-25
The .edb file of a database may grow too large for its volume in Microsoft Exchange Server 2010. If this occurs, you must take the following actions:
- Move mailboxes from the problem Exchange mailbox database to
mailbox databases that have more space.
- Remove the problem mailbox database.
As an optional third step, you can re-create the original database, and then restore some of the mailboxes to it.
To resolve this issue, follow these steps.
Important: |
---|
Contact Microsoft Customer Service and Support for help to complete this procedure. For more information, see the Contact us website. |
Prerequisites
- Verify that all copies of the database are in a healthy state.
To do this, run the following command:
- Get-MailboxDatabaseCopyStatus (Get-MailboxDatabase | ?
{$_.EdbFilePath -eq $pathToEDBdatabaseFile})
- Get-MailboxDatabaseCopyStatus (Get-MailboxDatabase | ?
{$_.EdbFilePath -eq $pathToEDBdatabaseFile})
- In Exchange Management Shell, run the following commands to
determine whether mailboxes exist on the databases:
- Set-ADServerSettings -ViewEntireForest $True
- Get-Mailbox -Database "<Database_ID>"
- Set-ADServerSettings -ViewEntireForest $True
Warning: |
---|
This process can permanently delete data. Make sure that there no mailboxes exist on the affected database before you go to the next step. |
Use the shell to reclaim space when the edb file size has grown too large
You need to be assigned permissions before you can perform this procedure. To see what permissions you need, see the "Mailbox databases" entry in the Mailbox Permissions topic.
- Open Exchange Management Shell.
- Note the configured properties of the affected database and
database copies. See the Configure Mailbox
Database Copy Properties topic for the properties that will
have to be reset when the database copies are re-created.
- Follow the instructions in the Remove a Mailbox
Database Copy topic to remove all passive copies of the
database.
Note: As mentioned in the “Remove a Mailbox Database Copy” topic, circular logging must be disabled when you remove the last passive database copy. If circular logging is enabled, run the following cmdlet to disable it for the database: Set-MailboxDatabase "<Database_Identity>" –CircularLoggingEnabled $false - Run the following cmdlet to unmount the database:
Dismount-Database "<Database_Identity>"When you are
prompted, type a to confirm the action.
- Run the following cmdlet to remove the mailbox database:
Remove-MailboxDatabase "<Database_Identity>"When you
are prompted, type a to confirm the action.
- Manually delete the .edb file and log files of this database
from all servers that contained database copies. Also, manually
delete the .edb file and log files from all servers that contain a
copy of the database that you are removing.
- Follow the instructions in the Create a Mailbox Database topic to re-create this
database.
- Run the following cmdlet to mount the empty database:
Remove-MailboxDatabase "<Database_Identity>".
- Manually delete the edb and log files of this database from all
servers that contained database copies.
- Follow the instructions in the Create a Mailbox Database topic to re-create this
database.
- Run the following cmdlet to mount the empty database:
Mount-Database "<Database_Identity>" -Force
- Follow the instructions in the Add a Mailbox Database Copy topic to re-create all the
database copies you removed in step 2. Use the properties that you
noted in step 2.
- If Circular Logging was disabled in step 3, run the following
cmdlet to enable Circular Logging: Set-MailboxDatabase
"<Database_Identity>" -CircularLoggingEnabled $true. For
more information about circular logging, see the "Circular Logging"
entry in the Understanding the
Exchange 2010 Store topic.
- Move some mailboxes back to this database.
Validation
To validate the database, follow these steps.
- Run the following cmdlet to verify the health of all copies of
this database: Get-MailboxDatabaseCopyStatus
"<Database_Identity>"
- Run the following cmdlet to verify that the database can
replicate changes to all servers that contain database copies:
Test-ReplicationHealth
<Each_Server_With_A_Copy_Of_The_Database>
- Run the following cmdlet to verify the health of all servers
that contain database copies: Test-MAPIConnectivity
<Server_With_The_Mounted_Copy_Of _The_Database>