排查来自 Azure SQL 数据库的 Fabric 镜像数据库的问题

本文介绍镜像 Azure SQL 数据库的故障排除步骤。

有关为 Fabric SQL 数据库自动配置的镜像进行故障排除,请参阅排查来自 Fabric SQL 数据库的镜像问题

Fabric 容量或工作区的更改

原因 Result 建议的解决方案
Fabric 容量已暂停/删除 镜像将停止 1. 从 Azure 门户恢复或分配容量
2. 转到 Fabric 镜像数据库项。 在工具栏中,选择“停止复制”。
3. 通过在 Fabric 门户中为镜像项选择“镜像数据库”来启动复制。
已恢复 Fabric 容量 镜像将不会恢复 1. 转到 Fabric 镜像数据库项。 在工具栏中,选择“停止复制”。
2. 通过在 Fabric 门户中为镜像项选择“镜像数据库”来启动复制。
已删除工作区 镜像自动停止 如果镜像在 Azure SQL 数据库上仍然处于活动状态,请在 Azure SQL 数据库上执行以下存储过程:exec sp_change_feed_disable_db;
Fabric 试用容量已过期 镜像自动停止 请参阅 Fabric 试用容量过期
超出 Fabric 容量 镜像将暂停 等待过载状态结束或更新容量。 通过为从过载情况中恢复可采取的操作了解详细信息。 恢复容量后,镜像将继续。

用于故障排除的 T-SQL 查询

如果遇到镜像问题,请使用动态管理视图 (DMV) 和存储过程执行以下数据库级检查,以验证配置。

  1. 执行下面的查询,检查更改是否正确得到应用:

    SELECT * FROM sys.dm_change_feed_log_scan_sessions;
    
  2. 如果 sys.dm_change_feed_log_scan_sessions DMV 没有显示任何处理增量更改的进展,请执行以下 T-SQL 查询,检查是否报告了任何问题:

    SELECT * FROM sys.dm_change_feed_errors;
    
  3. 如果没有报告任何问题,请执行以下存储过程,查看镜像 Azure SQL 数据库的当前配置。 请确认它已正确启用。

    EXEC sp_help_change_feed;
    

    table_namestate 是此处需要注意的关键列。 除 4 之外的任何值都表明存在潜在问题。

  4. 如果复制仍然不起作用,请验证是否为具有权限的正确 SAMI 对象。

    1. 在 Fabric 门户中,选择镜像数据库项上的“...”省略号选项。
    2. 选择“管理权限”选项。
    3. 确认 Azure SQL 逻辑服务器名称显示具有读取、写入权限。
    4. 确保显示的 AppId 与 Azure SQL 数据库逻辑服务器的 SAMI ID 匹配。
  5. 如需排除故障,请联系支持人员

托管的标识

需要启用 Azure SQL 逻辑服务器的系统分配托管标识 (SAMI),并且必须是主要标识。 有关详细信息,请参阅使用用户分配的托管标识创建 Azure SQL 数据库服务器

启用后,如果 SAMI 设置状态为关闭,或者一开始为启用,然后为禁用,然后又为启用,则从 Azure SQL 数据库到 Fabric OneLake 的镜像会失败。

SAMI 必须是主要标识。 使用以下查询验证 SAMI 是否为主要标识:SELECT * FROM sys.dm_server_managed_identities;

用户分配的托管标识 (UAMI) 不受支持。 如果添加 UAMI,它将成为主要标识,并取代作为主要标识的 SAMI。 这会导致复制失败。 若要解决问题,请执行以下操作:

  • 移除所有 UAMIS。 确认已启用 SAMI。

SPN 权限

请勿移除 Fabric 镜像数据库项上的 Azure SQL 数据库服务主体名称 (SPN) 参与者权限。

如果意外移除 SPN 权限,镜像 Azure SQL 数据库将无法按预期工作。 无法从源数据库镜像新数据。

如果移除 Azure SQL 数据库 SPN 权限或权限未正确设置,请使用以下步骤。

  1. 选择镜像数据库项上的 ... 省略号选项,将 SPN 添加为用户。
  2. 选择“管理权限”选项。
  3. 输入 Azure SQL 数据库逻辑服务器的名称。 提供读取写入权限。