Microsoft Entra Connect:如何从 LocalDB 10-GB 限制恢复

Microsoft Entra Connect 要求使用 SQL Server 数据库来存储标识数据。 可以使用随 Microsoft Entra Connect 一起安装的默认 SQL Server 2019 Express LocalDB,也可以使用自己的完整 SQL。 SQL Server Express 存在 10 GB 的大小限制。 使用 LocalDB 并达到此限制后,Microsoft Entra Connect 同步服务将无法正常启动或同步。 本文提供了恢复步骤。

症状

有两种常见的症状:

  • Microsoft Entra Connect 同步服务可以运行但无法同步,并出现“stopped-database-disk-full”错误。

  • Microsoft Entra Connect 同步服务无法启动。 尝试启动该服务时失败且出现事件 6323 和错误消息“服务器遇到错误,因为 SQL Server 磁盘空间不足”。

短期恢复步骤

本部分提供的步骤用于回收 DB 空间,该空间是 Microsoft Entra Connect 同步服务恢复运行所必需的。 步骤包括:

  1. 确定 Synchronization Service 状态
  2. 收缩数据库
  3. 删除运行历史记录数据
  4. 缩短运行历史记录数据的保留期

确定 Synchronization Service 状态

首先,确定 Synchronization Service 是否仍在运行:

  1. 以管理员身份登录到 Microsoft Entra Connect 服务器。

  2. 转到“服务控制管理器”

  3. 检查 Microsoft Entra ID Sync 的状态。

  4. 请勿停止或重新启动正在运行的服务。 跳过收缩数据库步骤,转到删除运行历史记录数据步骤。

  5. 如果服务未运行,请尝试启动服务。 如果服务成功启动,请跳过收缩数据库步骤,转到删除运行历史记录数据步骤。 否则,请继续执行收缩数据库步骤。

收缩数据库

使用收缩操作可释放足够的 DB 空间,以便启动 Synchronization Service。 该操作释放 DB 空间的方式是删除数据库中的空格。 此步骤只需尽力操作即可,因为无法保证总能恢复空间。 若要详细了解收缩操作,请阅读 Shrink a database(收缩数据库)一文。

重要

如果能够运行 Synchronization Service,请跳过此步骤。 建议不要收缩 SQL DB,因为随着碎片增加,可能会导致性能不佳。

为 Microsoft Entra Connect 创建的数据库的名称为 ADSync。 若要执行收缩操作,必须以数据库的 sysadmin 或 DBO 身份登录。 在 Microsoft Entra Connect 安装过程中,为以下帐户授予了 sysadmin 权限:

  • 本地管理员
  • 曾用于运行 Microsoft Entra Connect 安装的用户帐户。
  • 用作 Microsoft Entra Connect 同步服务操作上下文的 Sync Service 帐户。
  • 安装期间创建的本地组 ADSyncAdmins。
  1. 备份数据库,方法是将 %ProgramFiles%\Azure AD Sync\Data 下的 ADSync.mdfADSync_log.ldf 文件复制到安全位置。

  2. 启动新的 PowerShell 会话。

  3. 导航到文件夹 %ProgramFiles%\Microsoft SQL Server\110\Tools\Binn

  4. 启动 sqlcmd 实用程序,方法是运行 ./SQLCMD.EXE -S "(localdb)\.\ADSync" -U <Username> -P <Password> 命令并使用 sysadmin 或数据库 DBO 的凭据。

  5. 要收缩数据库,请在 sqlcmd 提示符 (1>) 处输入 DBCC Shrinkdatabase(ADSync,1);,并在下一行输入 GO

  6. 如果操作成功,请尝试再次启动 Synchronization Service。 如果可以启动 Synchronization Service,请转到删除运行历史记录数据步骤。 否则,请联系支持部门。

删除运行历史记录数据

默认情况下,Microsoft Entra Connect 最多保留 7 天的运行历史记录数据。 在此步骤中,我们会通过删除运行历史记录数据来回收 DB 空间,这样 Microsoft Entra Connect 同步服务就可以重新开始同步。

  1. 转到“开始”→ Synchronization Service,以便启动 Synchronization Service Manager

  2. 转到“操作”选项卡。

  3. 在“操作”下面,选择“清除运行”。

  4. 可以选择“清除所有运行”或“清除 <date> 之前的运行…”选项。 建议一开始清除超过两天的运行历史记录数据。 如果仍遇到 DB 大小问题,则选择“清除所有运行”选项。

缩短运行历史记录数据的保留期

此步骤是为了在多次同步周期后降低遇到 10 GB 限制问题的可能性。

  1. 打开新的 PowerShell 会话。

  2. 运行 Get-ADSyncScheduler 并记下 PurgeRunHistoryInterval 属性,该属性指定当前的保留期。

  3. 运行 Set-ADSyncScheduler -PurgeRunHistoryInterval 2.00:00:00,将保留期设置为两天。 根据需要调整保留期。

长期解决方案 - 迁移到完整的 SQL

通常情况下,此问题表示 10 GB 的数据库大小已经无法让 Microsoft Entra Connect 将本地 Active Directory 同步到 Microsoft Entra ID。 建议改用完整版 SQL Server。 不能直接将现有 Microsoft Entra Connect 部署的 LocalDB 替换为完整版 SQL 的数据库, 而必须使用完整版 SQL 来部署新的 Microsoft Entra Connect 服务器。 建议执行交叉迁移,将新的 Microsoft Entra Connect 服务器(装有 SQL DB)部署为过渡服务器,与现有的 Microsoft Entra Connect 服务器(装有 LocalDB)并存。

后续步骤

详细了解如何将本地标识与 Microsoft Entra ID 集成