Compact the directory database file (offline defragmentation)

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Note

This procedure is for Windows Server 2003. For the Windows Server 2008 version of this procedure, see Compact the Directory Database File (Offline Defragmentation) (https://go.microsoft.com/fwlink/?LinkID=93225).

As part of the offline defragmentation procedure, check directory database integrity.

Performing offline defragmentation creates a new, compacted version of the database file in a different location. This location can be either on the same computer or a network-mapped drive. However, to avoid potential problems related to network issues, perform this procedure using a local mass storage device. You can use locally attached external mass storage devices, such as Universal Serial Bus (USB), IEEE 1394, and Serial Advanced Technology Attachment (SATA), to provide additional disk space for defragmentation of the database.

After you compact the file to the temporary location, copy the compacted Ntds.dit file back to the original location. If possible, maintain a copy of the original database file that you have either renamed in its current location or copied to an archival location.

Note

To perform this procedure, the domain controller must be started in Directory Services Restore Mode (DSRM).

Administrative Credentials

To perform this procedure, you must provide the Directory Services Restore Mode password for the local administrator account. At the remote location, you must have Read and Write permissions on the destination drive and the shared folder.

Disk Space

  • Current database drive. Free space (on the drive that contains the Active Directory database file) equivalent to at least 15 percent of the current size of the database (Ntds.dit) for temporary storage during the index rebuild process.

  • Destination database drive. Free space equivalent to at least the current size of the database for storage of the compacted database file.

Note

These disk space requirements mean that if you compress the Active Directory database on a single drive, you should have free space equivalent to at least 115 percent of the space that the current Active Directory database uses on that drive.

To perform offline defragmentation of the directory database

  1. In DSRM, compact the database file to a local directory or remote shared folder, as follows:

    • Local directory: Go to step 2.

    • Remote directory: If you are compacting the database file to a shared folder on a remote computer, establish a network connection to the shared folder as shown below. Because you are logged on as the local administrator, unless permissions on the shared folder include the built-in Administrator account, you must provide a domain name, user name, and password for a domain account that has Write permissions on the shared folder. In the example below, \\SERVER1\NTDS is the name of the shared folder, and K: is the drive that you are mapping to the shared folder. After typing the first line and pressing ENTER, you are prompted for the password. Type the password and then press ENTER.

      **H:\>net use K: \\SERVER1\NTDS /user:domainName\**userName *

      Type the password for \\SERVER1\NTDS:

      Drive K: is now connected to \\SERVER1\NTDS

      The command completed successfully.

  2. Type the following command at a command prompt, and then press ENTER:

    ntdsutil

  3. At the ntdsutil: prompt, type files, and then press ENTER.

  4. At the file maintenance: prompt, type compact to drive:\ LocalDirectoryPath (where drive:\ LocalDirectoryPath is the path to a location on the local computer), and then press ENTER.

    If you have mapped a drive to a shared folder on a remote computer, type the drive letter only (for example, compact to K:\).

    Note

    When compacting to a local drive, you must provide a path. If the path contains any spaces, enclose the entire path in quotation marks (for example, compact to "c:\new folder"). If the directory does not exist, Ntdsutil.exe creates it and creates the file named Ntds.dit in that location.

  5. If defragmentation completes successfully, type quit, and then press ENTER to quit the file maintenance: prompt. Type quit again, and then press ENTER to quit Ntdsutil.exe. Go to step 6. If defragmentation completes with errors, go to step 9.

    Warning

    Do not overwrite the original Ntds.dit file or delete any log files.

  6. If defragmentation succeeds with no errors, follow the Ntdsutil.exe onscreen instructions to:

    1. Delete all of the log files in the log directory by typing:

      del drive**:\pathToLogFiles\*.log**

      Note

      You do not have to delete the Edb.chk file.

    2. You should make a copy of the existing Ntds.dit file if at all possible, even if you have to store that copy to a secured network drive. If the compaction of the database does not work properly, you can then easily restore the database by copying it back to the original location. Do not delete the copy of the Ntds.dit file until you have at least verified that the domain controller starts properly. If space allows, you can rename the original Ntds.dit file to preserve it or else copy it to a different location. Avoid overwriting the original Ntds.dit file.

    3. Manually copy the compacted database file to the original location, as follows:

      copy temporaryDrive**:\ntds.dit** originalDrive**:\pathToOriginalDatabaseFile\ntds.dit**

  7. Type ntdsutil and then press ENTER.

  8. At the ntdsutil: prompt, type files and then press ENTER.

  9. At the file maintenance: prompt, type integrity and then press ENTER.

    If the integrity check fails, the likely cause is that an error occurred during the copy operation in step 6.c. Repeat steps 6.c through step 9. If the integrity check fails again:

    • Contact Microsoft Product Support Services.

      -or-

    • Copy the original version of the Ntds.dit file that you preserved in step 6.b. to the original database location and repeat the offline defragmentation procedure.

  10. If the integrity check succeeds, proceed as follows:

    • If the initial compact to command failed, go back to step 4 and perform steps 4 through 9.

    • If the initial compact to command succeeded, type quit and press ENTER to quit the file maintenance: prompt, and then type quit and press ENTER again to quit Ntdsutil.exe.

  11. Restart the domain controller normally. If you are connected remotely through a Terminal Services session, be sure that you have modified the Boot.ini file for normal restarting before you restart the domain controller.

If errors appear when you restart the domain controller:

  1. Restart the domain controller in Directory Services Restore Mode.

  2. Check the errors in Event Viewer.

    If the following events are logged in Event Viewer on restarting the domain controller, respond to the events as follows:

    • Event ID 1046. “The Active Directory database engine caused an exception with the following parameters.” In this case, Active Directory cannot recover from this error and you must restore from backup media.

    • Event ID 1168. “Internal error: An Active Directory error has occurred.” In this case, information is missing from the registry and you must restore from backup media.

  3. Check database integrity and then proceed as follows:

    If the integrity check fails, try repeating step 6.c through step 9 above, and then repeat the integrity check. If the integrity check fails again:

    • Contact Microsoft Product Support Services.

      -or-

    • Copy the original version of the Ntds.dit file that you preserved in step 6.2. to the original database location and repeat the offline defragmentation procedure.

      If the integrity check succeeds, perform semantic database analysis with fixup.

  4. If semantic database analysis with fixup succeeds, quit Ntdsutil.exe and restart the domain controller normally.

If semantic database analysis with fixup fails, contact Microsoft Product Support Services.