本文介绍镜像 Azure SQL 托管实例的故障排除步骤。
Fabric 容量或工作区的更改
参阅对 Fabric 容量做出更改以了解详细信息。
此外,请特别注意 Azure SQL 托管实例的以下内容:
原因 | 结果 | 建议的解决方案 |
---|---|---|
已删除工作区 | 镜像会自动停止,并禁用 Azure SQL 托管实例中的更改馈送 | 如果镜像在 Azure SQL 托管实例上仍然处于活动状态,请在 Azure SQL 托管实例上执行以下存储过程: exec sp_change_feed_disable_db; |
用于故障排除的 T-SQL 查询
如果遇到镜像问题,请使用动态管理视图 (DMV) 和存储过程执行以下数据库级检查,以验证配置。
执行下面的查询,检查更改是否正确得到应用:
SELECT * FROM sys.dm_change_feed_log_scan_sessions;
如果
sys.dm_change_feed_log_scan_sessions
DMV 没有显示任何处理增量更改的进展,请执行以下 T-SQL 查询,检查是否报告了任何问题:SELECT * FROM sys.dm_change_feed_errors;
如果没有报告任何问题,请执行以下存储过程来查看镜像的 Azure SQL 托管实例的当前配置。 请确认它已正确启用。
EXEC sp_help_change_feed;
table_name
和state
是此处需要注意的关键列。 除4
之外的任何值都表明存在潜在问题。 (表格不应长时间处于非4
状态。)如果复制仍然不起作用,请验证正确的 SAMI 对象是否具有权限(请参阅 SAMI 权限)。
- 在 Fabric 门户中,选择镜像数据库项上的“...”省略号选项。
- 选择“管理权限”选项。
- 确认 Azure SQL 托管实例名称显示具有读取、写入权限。
- 确保显示的 AppId 与 Azure SQL 托管实例的 SAMI ID 匹配。
如需排除故障,请联系支持人员。
托管的标识
需要启用 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 权限或权限未正确设置,请使用以下步骤。
- 通过选择
...
镜像托管实例项上的省略号选项,将 SAMI 添加为用户。 - 选择“管理权限”选项。
- 进入 Azure SQL 托管实例公共终结点。 提供读取和写入权限。