How to perform offline defragmentation of the Active Directory database

Support for Windows Server 2003 ended on July 14, 2015

Microsoft ended support for Windows Server 2003 on July 14, 2015. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

Active Directory automatically performs online defragmentation of the database at certain intervals as part of the Garbage Collection process. (By default, this occurs every 12 hours.) Online defragmentation does not reduce the size of the database file (Ntds.dit) but instead optimizes data storage in the database and reclaims space in the directory for new objects.  

Performing an offline defragmentation creates a new version of the database file without internal fragmentation. It also re-creates all indexes. Depending on how fragmented the original database file was, the new file may be much smaller. 
More information
To perform offline defragmentation of the Active Directory database:
  1. Back up Active Directory. Windows Server Backup natively supports backing up Active Directory while online. This occurs automatically when you select the option to back up everything on the computer in the Backup Wizard, or independently by selecting to back up the "System State" in the wizard.
  2. For Windows 2000 Server and Windows Server 2003 
    Restart the domain controller, select the appropriate installation from the boot menu, and then press F8 to display the Windows 2000 Server Advanced Options menu. Select Directory Services Restore Mode, and then press Enter. Press Enter again to restart.

    For Windows Server 2008 and later versions
    Take one of the following actions:
    • Stop the "Active Directory Domain Services" or LDS instance. 
    • Start "msconfig," and go to the boot pane. Select the OS installation that you want to configure. Select Safe Boot in the Boot options section, and also select the Active Directory repair item. After you click OK, the tool asks you to restart. Restart the computer.
  3. Log on to the administrator account by using the password that is defined for the local administrator account in the Directory Service Restore Mode SAM. For more information about how to use the offline SAM database, click the following article number to view the article in the Microsoft Knowledge Base: 
    223301 Protection of the administrator account in the offline SAM 
  4. Click Start, point to Programs, point to Accessories, and then click Command Prompt.
  5. At the command prompt, type cmd, and then press Enter.
  6. NTDSUTIL uses the TEMP and TMP environment variables to create a temporary database during defragmentation. If the free space on your standard volume used is less than the size of the compacted database, you receive the following error:
    file maintenance: compact to d:\compactDB
    Initiating DEFRAGMENTATION mode...
         Source Database: D:\windows\NTDS\ntds.dit
         Target Database: d:\compactDB\ntds.dit

                      Defragmentation  Status (% complete)

              0    10   20   30   40   50   60   70   80   90  100


              ..........................Operation terminated with error -1808( JET_errDiskFull, No space left on disk ).

    In the Application log, you see an event that resembles the following:

    Log Name:      Application
    Source:        ESENT
    Event ID:      482
    Task Category: General
    Level:         Error
    Keywords:      Classic
    Description:NTDS (12852) An attempt to write to the file "C:\Users\administrator\AppData\Local\Temp\tmp.edb" at offset 49315536896 (0x0000000b7b6f6000) for 0 (0x00000000) bytes failed after 0.015 seconds with system error 112 (0x00000070): "There is not enough space on the disk. ".  The write operation will fail with error -1808 (0xfffff8f0).  If this error persists then the file may be damaged and may need to be restored from a previous backup.

    In this case, set the environment variables TMP and TEMP to a volume that has enough free space for the task. For example, use the following settings:

    Md d:\temp

    Set tmp=d:\temp

    Set temp=d:\temp

    Note This problem can also occur during an integrity check of the database.
  7. Run NTDSUTIL.
  8. For Windows 2008 and later versions
    Type activate instance ntds to select the Active Directory database instance.  Use the LDS instance name if you want to compact an LDS database.
  9. Type files, and then press Enter. 
  10. Type info, and then press Enter. This displays current information about the path and size of the Active Directory database and its log files. Note the path.
  11. Establish a location that has sufficient drive space for the compacted database to be stored.
  12. Type compact to drive:\directory, and then press Enter. Note, in this command, the placeholders drive and directory represent the path of the location that you established in the previous step.

    Note You must specify a directory path. If the path contains any spaces, the whole path must be enclosed in quotation marks. For example, type:
    compact to "c:\new folder"
  13. A new database that is named Ntds.dit or AdamNtds.dit is created in the path that you specified. 
  14. Type quit, and then press Enter. Type quit again to return to the command prompt.
  15. If defragmentation succeeds without errors, follow the Ntdsutil.exe on-screen instructions. Delete all the log files in the log directory by typing the following command: 
    del drive :\ pathToLogFiles \*.log
     Copy the new Ntds.dit or AdamNtds.dit file over the old database file in the current database path that you noted in step 5. 

    Note You do not have delete the Edb.chk file.
  16. For Windows 2000 Server and Windows Server 2003 
    Restart the computer. 

    For Windows Server 2008 and later versions
    If you stopped Active Directory Domain Services or LDS instance, you can restart it now.
  17. For Windows Server 2008 and later versions 
    If you are working in the Active Directory Restore mode, start msconfig and go to the boot pane. Select the operating system installation that you want to configure. Click to clear Safe Boot in the Boot options section. When you click OK, the tool asks you to restart. Restart the computer.

Article ID: 232122 - Last Review: 08/24/2015 22:12:00 - Revision: 5.0

  • Windows Server 2012 R2 Standard
  • Windows Server 2012 R2 Essentials
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 Standard
  • Windows Server 2012 Essentials
  • Windows Server 2012 Datacenter
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 Standard
  • Windows Server 2008 Enterprise
  • Microsoft Windows Server 2003 Service Pack 2
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • kbhowto KB232122