教程:配置来自 Azure SQL 托管实例的 Microsoft Fabric 镜像数据库(预览版)

Fabric 中的镜像是一种基于云的企业级零 ETL SaaS 技术。 本部分介绍如何创建镜像的 Azure SQL 托管实例数据库,该数据库表示从 OneLake 中的 Azure SQL 托管实例中所选数据库连续复制的只读副本。

先决条件

  • 创建或使用现有的 Azure SQL 托管实例。
  • 需要 Fabric 的现有容量。 如果没有,请启动 Fabric 试用版
    • Fabric 容量需要处于活动状态并正在运行。 暂停或删除的容量会影响镜像,不会复制任何数据。
  • 启用 Fabric 租户设置“服务主体可以使用 Fabric API”。 若要了解如何启用租户设置,请参阅关于租户设置
  • Fabric 访问 Azure SQL 托管实例的网络要求:

启用 Azure SQL 托管实例的系统分配托管标识 (SAMI)

必须启用 Azure SQL 托管实例的系统分配托管标识 (SAMI),并且必须是主标识,才能将数据发布到 Fabric OneLake。

  1. 若要配置或验证是否已启用 SAMI,请转到 Azure 门户中的 SQL 托管实例。 在“资源”菜单中的“安全性”下,选择“标识”
  2. 然后在“系统分配的托管标识”下,将“状态”设置为“开启”
  3. SAMI 必须是主要标识。 使用以下 T-SQL 查询验证 SAMI 是否为主要标识:SELECT * FROM sys.dm_server_managed_identities;

Fabric 的数据库主体

接下来,需要创建一种让 Fabric 服务连接到 Azure SQL 托管实例的方法。

可以使用登录名和映射的数据库用户来完成此操作。 为了遵循最低特权原则以提高安全性,应仅授予要镜像的数据库中的 CONTROL DATABASE 权限。

使用登录名和映射的数据库用户

  1. 使用 SQL Server Management Studio (SSMS)Azure Data Studio 连接到 Azure SQL 托管实例。 连接到 master 数据库。

  2. 创建服务器登录名并分配相应的权限。

    • 创建经过 SQL 身份验证的登录帐户。 可以为此登录帐户选择任何名称,将以下脚本中的 <fabric_login> 替换为该名称。 提供自己的强密码。 在 master 数据库中运行以下 T-SQL 脚本:
    CREATE LOGIN <fabric_login> WITH PASSWORD = '<strong password>';
    ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER <fabric_login>;
    
    • 或者,从现有帐户创建经过 Microsoft Entra ID 身份验证的登录名。 在 master 数据库中运行以下 T-SQL 脚本:
    CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER;
    ALTER SERVER ROLE [##MS_ServerStateReader##] ADD MEMBER [bob@contoso.com];
    
  3. 将查询范围切换到要镜像的数据库。 用数据库的名称替换 <mirroring_source_database> 并运行以下 T-SQL:

    USE [<mirroring_source_database>];
    
  4. 创建连接到登录帐号的数据库用户。 用新数据库用户的名称替换 <fabric_user>

    CREATE USER <fabric_user> FOR LOGIN <fabric_login>;
    GRANT CONTROL TO <fabric_user>;
    

    或者对于 Microsoft Entra 登录帐号,

    CREATE USER [bob@contoso.com] FOR LOGIN [bob@contoso.com];
    GRANT CONTROL TO [bob@contoso.com];
    

创建镜像的 Azure SQL 托管实例数据库

  1. 打开 Fabric 门户
  2. 使用现有的工作区,或创建新的工作区。
  3. 导航到“创建”窗格。 选择“创建”图标。
  4. 滚动到“数据仓库”部分,然后选择“镜像的 Azure SQL 托管实例(预览版)”。

连接到 Azure SQL 托管实例

若要启用镜像,需要从 Fabric 连接到 Azure SQL 托管实例,以启动 SQL 托管实例与 Fabric 之间的连接。 以下步骤将指导你完成创建与 Azure SQL 托管实例的连接:

  1. 在“新建源”下,选择“Azure SQL 托管实例”。 或者,从 OneLake 目录选择现有的 Azure SQL 数据库连接。
    1. 不能将现有的 Azure SQL 托管实例连接与类型“SQL Server”(泛型连接类型)配合使用。 Azure SQL 托管实例数据的镜像只支持连接类型为“SQL 托管实例”的连接。
  2. 如果选择了“新建连接”,请输入 Azure SQL 托管实例的连接详细信息。 你需要连接到特定数据库,无法为整个 SQL 托管实例及其所有数据库设置镜像。
    • 服务器:可以通过导航到 Azure 门户中 Azure SQL 托管实例“网络”页面(在“安全”菜单下),并查看“公共终结点”字段来查找服务器名称。 例如,<managed_instance_name>.public.<dns_zone>.database.windows.net,3342
    • 数据库:输入要镜像的数据库的名称。
    • 连接:创建新连接。
    • 连接名称:会自动提供名称。 可以根据需要更改它,以便将来查找此 SQL 托管实例数据库连接。
    • 身份验证种类
      • 基本(SQL 身份验证)
      • 组织帐户 (Microsoft Entra ID)
      • 租户 ID(Azure 服务主体)
  3. 选择“连接” 。

启动镜像过程

  1. “配置镜像”屏幕允许你镜像数据库中的所有数据,这是默认选项。

    • 镜像所有数据意味着,镜像启动后创建的任何新表都会被镜像。

    • 也可选择只镜像某些对象。 禁用“镜像所有数据”选项,然后从数据库中选择单独的表。

    • 如果表根本无法镜像,它们将显示错误图标和相关说明文本。 同理,如果表只能在有限制的情况下进行镜像,则会显示带有相关说明文本的警告图标。

    在本教程中,我们将选择“镜像所有数据”选项。

  2. 在下一个屏幕上,为目标命名并选择“创建镜像数据库”。 现在,请等待一两分钟,让 Fabric 为你预配所有内容。

  3. 2-5 分钟后,选择“监视复制”以查看状态。

  4. 几分钟后,状态应变为“正在运行”,这表明正在同步表。

    如果未看到表和相应的复制状态,请等待几秒钟,然后刷新面板。

  5. 表的初始复制完成后,“上次刷新”列中会显示一个日期。

  6. 现在,你的数据已启动并运行,整个 Fabric 中具有各种可用的分析场景。

重要

在源数据库中建立的任何粒度的安全性,都必须在 Microsoft Fabric 中的镜像数据库中重新配置。

监视 Fabric 镜像

配置镜像后,将定向到“镜像状态”页。 可以在此处监视复制的当前状态。

以下是复制状态:

  • 对于整体数据库级别监视:

    • 正在运行:复制当前正在运行,并将快照和更改数据引入 OneLake。
    • 运行并显示警告:复制正在运行,出现暂时性错误。
    • 正在停止/已停止:复制已停止。
    • 错误:复制中无法恢复的严重错误。
  • 对于表级监视:

    • 运行:表中的数据正在成功复制到仓库。
    • 运行并显示警告:复制表中数据时的非严重错误警告。
    • 正在停止/已停止:复制已停止。
    • 错误:该表的复制中出现严重错误。

如果初始同步已完成,则表名称旁边会显示“上次完成”的时间戳。 此时间戳表示 Fabric 上次检查表是否有更改的时间。

另请注意“已复制的行”列。 它计算已为该表复制的所有行。 每次复制行时,都会再次对该列进行计数。 例如,这意味着如果在源上插入主键 =1 的行,会使“已复制的行”计数增加一个。 如果使用同一主键更新行,则会再次复制到 Fabric,并且行计数也会增加一个,即使该行是再次复制的同一行。 Fabric 会对行上发生的所有复制进行计数,包括插入、删除、更新。

“监视复制”屏幕还反映了正在镜像的表的所有错误和警告。 如果表具有不支持的列类型,或者如果整个表不受支持(例如在内存或列存储索引中),则会在此屏幕上显示有关限制的通知。 有关复制状态的详细信息和详细信息,请参阅 Monitor Fabric 镜像数据库复制

重要

如果源表中没有更新,复制引擎将开始以指数级速度延长处理的间隔时间,最长可达一小时。 检测到更新数据后,复制引擎将自动恢复常规的轮询。