本文介绍如何对 Active Directory 数据库执行脱机碎片整理。
原始 KB 数: 232122
总结
Active Directory 会在垃圾回收过程中按特定时间间隔自动对数据库执行联机碎片整理。 (默认情况下,每隔 12 小时发生一次。联机碎片整理不会减小数据库文件(Ntds.dit)的大小,而是优化数据库中的数据存储,并为新对象回收目录中的空间。
执行脱机碎片整理会创建新版本的数据库文件,而无需内部碎片。 它还重新创建所有索引。 根据原始数据库文件的碎片程度,新文件可能要小得多。
对 Active Directory 数据库执行脱机碎片整理
若要对 Active Directory 数据库执行脱机碎片整理,请执行以下步骤:
-
备份 Active Directory。 Windows Server 备份在联机时本机支持备份 Active Directory。 选择在备份向导中备份计算机上的所有内容的选项时,或者通过选择 备份向导中的系统状态 来独立进行备份时,会自动发生此情况。
-
请执行以下一项操作:
- 停止Active Directory 域服务或 LDS 实例。
- 启动 msconfig,然后转到启动窗格。 选择要配置的 OS 安装。 在**“启动选项**”部分选择**“安全启动”,然后选择 Active Directory 修复项。 单击“确定”**后,该工具会要求重启。 重新启动计算机。
-
使用目录服务还原模式 SAM 中为本地管理员帐户定义的密码登录到管理员帐户。
-
打开命令提示符窗口。
-
NTDSUTIL 使用 TEMP 和 TMP 环境变量在碎片整理期间创建临时数据库。 如果所用标准卷上的可用空间小于压缩数据库的大小,则会收到以下错误:
文件维护:压缩到 d:\compactDB 正在启动碎片整理模式... 源数据库:D:\windows\NTDS\ntds.dit 目标数据库:d:\compactDB\ntds.dit
碎片整理状态(完成百分比)
0 10 20 30 40 50 60 70 80 90 100
|----|----|----|----|----|----|----|----|----|----|
..........................操作以错误 -1808 终止(JET_errDiskFull,磁盘上没有剩余空间)。
在这种情况下,请将环境变量 TMP 和 TEMP 设置为具有足够可用空间的任务卷。 例如,使用以下设置:
```console
Md d:\temp
Set tmp=d:\temp
Set temp=d:\temp
```
注意
在数据库的完整性检查期间,也可能发生此问题。
-
运行 NTDSUTIL。
-
键入激活实例 ntds 以选择 Active Directory 数据库实例。 如果要压缩 LDS 数据库,请使用 LDS 实例名称。
-
键入文件,然后按 Enter。
-
键入信息,然后按 Enter。 此时会显示有关 Active Directory 数据库及其日志文件的路径和大小的当前信息。 记下路径。
-
建立一个具有足够驱动器空间的位置,以便存储压缩的数据库。
-
键入
compact to <drive>:\<directory>,然后按 Enter。 在此命令中,占位符 <驱动器> 和 <目录> 表示在上一步中建立的位置的路径。注意
必须指定目录路径。 如果路径包含任何空格,则必须将整个路径括在引号中。 例如,键入 compact 为“c:\new folder”。
-
在指定的路径中创建名为 Ntds.dit 或 AdamNtds.dit 的新数据库。
-
键入退出,然后按 Enter。 再次键入退出以返回到命令提示符。
-
如果碎片整理成功且未出错,请按照屏幕上Ntdsutil.exe说明操作。 键入以下命令
del drive :\ pathToLogFiles \*.log,删除日志目录中的所有日志文件。将新的 Ntds.dit 或 AdamNtds.dit 文件复制到在步骤 5 中记录的当前数据库路径中的旧数据库文件。
注意
您没有删除 Edb.chk 文件。
-
如果停止了Active Directory 域服务或 LDS 实例,可以立即重启它。
-
如果在 Active Directory 还原模式下工作,请启动 msconfig 并转到启动窗格。 选择要配置的操作系统安装。 单击可清除**“启动选项”部分中的安全启动**。 单击“确定**”**时,该工具会要求重启。 重新启动计算机。