排查 Azure SQL 托管实例中的 Fabric 镜像数据库问题

本文介绍镜像 Azure SQL 托管实例的故障排除步骤。

对 Fabric 容量或工作区的更改

更改到构造容量了解详细信息。

此外,请特别注意 Azure SQL 托管实例的以下内容:

原因 结果 建议的解决方法
工作区已删除 镜像会自动停止,并禁用 Azure SQL 托管实例中的更改源 如果镜像在 Azure SQL 托管实例上仍然处于活动状态,请在 Azure SQL 托管实例上执行以下存储过程: exec sp_change_feed_disable_db;

用于故障排除的 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

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

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

托管标识

需要启用 Azure SQL 托管实例的系统分配托管标识(SAMI),并且必须是主标识。

启用后,如果 SAMI 设置状态已关闭或最初启用,则禁用,然后再次启用,Azure SQL 托管实例到 Fabric OneLake 的镜像将失败。 重新启用后的 SAMI 与禁用前的标识不同。 因此,需要授予新的 SAMI 权限才能访问 Fabric 工作区。

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

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

  • 删除所有 UAMIS。 验证是否已启用 SAMI。

SAMI 权限

Azure SQL 托管实例的系统分配托管标识(SAMI)需要对 Microsoft Fabric 中的镜像数据库项具有 读取写入 权限。 从 Fabric 门户创建镜像数据库时,会自动授予权限。 如果在安装过程中遇到错误 Unable to grant required permission to the source server. User does not have permission to reshare ,请确保工作区中具有足够权限的成员或管理员角色。 使用 API 创建镜像数据库时,请确保显式授予权限。

请勿删除对 Fabric 镜像数据库项的 SAMI 读取写入 权限。 如果意外删除了权限,则镜像 Azure SQL 托管实例将无法按预期工作。 无法从源数据库镜像新数据。

如果删除 Azure SQL 托管实例 SAMI 权限或权限未正确设置,请使用以下步骤。

  1. 通过选择 ... 镜像托管实例项上的省略号选项,将 SAMI 添加为用户。
  2. 选择“ 管理权限 ”选项。
  3. 输入 Azure SQL 托管实例公共终结点。 提供 读取写入 权限。

日志使用情况

启用镜像功能的数据库在使用事务日志时可能会继续增长,并阻止日志截断。 事务日志大小达到最大定义的限制后,写入数据库会失败。 为了防止这种情况发生,当使用的日志空间超过配置的日志空间总阈值时,镜像会触发自动重新分配整个数据库。 若要诊断此问题并了解自动重新分配,请参阅 Azure SQL 托管实例中 Fabric 镜像数据库的自动重新分配

重新播种已自动启动

从 Azure SQL 托管实例进行构造镜像可以在特定条件下自动重新分配,适用于单个表级别或整个数据库。 若要了解更多信息,请参阅 Azure SQL 托管实例中的 Fabric 镜像数据库自动重新分配