教程:配置来自 Azure SQL 托管实例的 Microsoft Fabric 镜像数据库(预览版)
Fabric 中的镜像是一种基于云的企业级零 ETL SaaS 技术。 本部分介绍如何创建镜像的 Azure SQL 托管实例数据库,该数据库表示从 OneLake 中的 Azure SQL 托管实例中所选数据库连续复制的只读副本。
先决条件
- 创建或使用现有的 Azure SQL 托管实例。
- 需要将源 Azure SQL 托管实例的更新策略配置为“始终最新”
- 源 Azure SQL 托管实例可以是单个 SQL 托管实例,也可以是属于实例池的 SQL 托管实例。
- 如果你没有 Azure SQL 托管实例,可以创建新的 SQL 托管实例。 如果需要,可以使用 Azure SQL 托管实例免费套餐。
- 在当前的预览阶段,我们建议使用现有数据库的副本,或任何现有的测试数据库或开发数据库,以便从备份中快速恢复。 如果要使用现有备份的数据库,请参阅从 Azure SQL 托管实例中的备份还原数据库。
- 需要 Fabric 的现有容量。 如果没有,请启动 Fabric 试用版。
- Fabric 容量需要处于活动状态并正在运行。 暂停或删除的容量会影响镜像,不会复制任何数据。
- 启用 Fabric 租户设置“服务主体可以使用 Fabric API”。 若要了解如何启用租户设置,请参阅 Fabric 租户设置。
- 如果未在 Fabric 工作区或租户中看到镜像,则组织管理员必须在管理员设置中启用。
- Fabric 访问 Azure SQL 托管实例的网络要求:
- 在当前预览版中,镜像要求 Azure SQL 托管实例具有需要从 Azure 云或 Power BI 服务标记访问的公共终结点。 有关详细信息,请参阅将 Azure SQL 托管实例安全地与公共终结点结合使用,了解如何安全地为 Azure SQL 托管实例运行公共终结点。
启用 Azure SQL 托管实例的系统分配托管标识 (SAMI)
必须启用 Azure SQL 托管实例的系统分配托管标识 (SAMI),并且必须是主标识,才能将数据发布到 Fabric OneLake。
- 若要配置或验证是否已启用 SAMI,请转到 Azure 门户中的 SQL 托管实例。 在“资源”菜单中的“安全性”下,选择“标识”。
- 然后在“系统分配的托管标识”下,将“状态”设置为“开启”。
- SAMI 必须是主要标识。 使用以下 T-SQL 查询验证 SAMI 是否为主要标识:
SELECT * FROM sys.dm_server_managed_identities;
Fabric 的数据库主体
接下来,需要创建一种让 Fabric 服务连接到 Azure SQL 托管实例的方法。
可以使用登录名和映射的数据库用户来完成此操作。 为了遵循最低特权原则以提高安全性,应仅授予要镜像的数据库中的 CONTROL DATABASE 权限。
使用登录名和映射的数据库用户
使用 SQL Server Management Studio (SSMS) 或 Azure Data Studio 连接到 Azure SQL 托管实例。 连接到
master
数据库。创建服务器登录名并分配相应的权限。
- 创建经过 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];
- 创建经过 SQL 身份验证的登录帐户。 可以为此登录帐户选择任何名称,将以下脚本中的
将查询范围切换到要镜像的数据库。 用数据库的名称替换
<mirroring_source_database>
并运行以下 T-SQL:USE [<mirroring_source_database>];
创建连接到登录帐号的数据库用户。 用新数据库用户的名称替换
<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 托管实例数据库
- 打开 Fabric 门户。
- 使用现有的工作区,或创建新的工作区。
- 导航到“创建”窗格。 选择“创建”图标。
- 滚动到“数据仓库”部分,然后选择“镜像的 Azure SQL 托管实例(预览版)”。
连接到 Azure SQL 托管实例
若要启用镜像,需要从 Fabric 连接到 Azure SQL 托管实例,以启动 SQL 托管实例与 Fabric 之间的连接。 以下步骤将指导你完成创建与 Azure SQL 托管实例的连接:
- 在“新建源”下,选择“Azure SQL 托管实例”。 或者,从 OneLake 数据中心选择现有的 Azure SQL 数据库连接。
- 不能将现有的 Azure SQL 托管实例连接与类型“SQL Server”(泛型连接类型)配合使用。 Azure SQL 托管实例数据的镜像只支持连接类型为“SQL 托管实例”的连接。
- 如果选择了“新建连接”,请输入 Azure SQL 托管实例的连接详细信息。 你需要连接到特定数据库,无法为整个 SQL 托管实例及其所有数据库设置镜像。
- 服务器:可以通过导航到 Azure 门户中 Azure SQL 托管实例“网络”页面(在“安全”菜单下),并查看“公共终结点”字段来查找服务器名称。 例如,
<managed_instance_name>.public.<dns_zone>.database.windows.net,3342
。 - 数据库:输入要镜像的数据库的名称。
- 连接:创建新连接。
- 连接名称:会自动提供名称。 可以根据需要更改它,以便将来查找此 SQL 托管实例数据库连接。
- 身份验证种类:
- 基本(SQL 身份验证)
- 组织帐户 (Microsoft Entra ID)
- 租户 ID(Azure 服务主体)
- 服务器:可以通过导航到 Azure 门户中 Azure SQL 托管实例“网络”页面(在“安全”菜单下),并查看“公共终结点”字段来查找服务器名称。 例如,
- 选择“连接” 。
启动镜像过程
“配置镜像”屏幕允许你镜像数据库中的所有数据,这是默认选项。
镜像所有数据意味着,镜像启动后创建的任何新表都会被镜像。
也可选择只镜像某些对象。 禁用“镜像所有数据”选项,然后从数据库中选择单独的表。
如果表根本无法镜像,它们将显示错误图标和相关说明文本。 同理,如果表只能在有限制的情况下进行镜像,则会显示带有相关说明文本的警告图标。
在本教程中,我们将选择“镜像所有数据”选项。
在下一个屏幕上,为目标命名并选择“创建镜像数据库”。 现在,请等待一两分钟,让 Fabric 为你预配所有内容。
2-5 分钟后,选择“监视复制”以查看状态。
几分钟后,状态应变为“正在运行”,这表明正在同步表。
如果未看到表和相应的复制状态,请等待几秒钟,然后刷新面板。
表的初始复制完成后,“上次刷新”列中会显示一个日期。
现在,你的数据已启动并运行,整个 Fabric 中具有各种可用的分析场景。
重要
在源数据库中建立的任何粒度的安全性,都必须在 Microsoft Fabric 中的镜像数据库中重新配置。
监视 Fabric 镜像
配置镜像后,将定向到“镜像状态”页。 可以在此处监视复制的当前状态。
以下是复制状态:
对于整体数据库级别监视:
- 正在运行:复制当前正在运行,并将快照和更改数据引入 OneLake。
- 运行并显示警告:复制正在运行,出现暂时性错误。
- 正在停止/已停止:复制已停止。
- 错误:复制中无法恢复的严重错误。
对于表级监视:
- 运行:表中的数据正在成功复制到仓库。
- 运行并显示警告:复制表中数据时的非严重错误警告。
- 正在停止/已停止:复制已停止。
- 错误:该表的复制中出现严重错误。
如果初始同步已完成,则表名称旁边会显示“上次完成”的时间戳。 此时间戳表示 Fabric 上次检查表是否有更改的时间。
另请注意“已复制的行”列。 它计算已为该表复制的所有行。 每次复制行时,都会再次对该列进行计数。 例如,这意味着如果在源上插入主键 =1 的行,会使“已复制的行”计数增加一个。 如果使用同一主键更新行,则会再次复制到 Fabric,并且行计数也会增加一个,即使该行是再次复制的同一行。 Fabric 会对行上发生的所有复制进行计数,包括插入、删除、更新。
“监视复制”屏幕还反映了正在镜像的表的所有错误和警告。 如果表具有不支持的列类型,或者如果整个表不受支持(例如在内存或列存储索引中),则会在此屏幕上显示有关限制的通知。 有关复制状态的更多信息和详细信息,请参阅监视 Fabric 镜像复制。
重要
如果源表中没有更新,复制引擎将开始以指数级速度延长处理的间隔时间,最长可达一小时。 检测到更新数据后,复制引擎将自动恢复常规的轮询。