你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用托管标识运行连续导出作业
适用于:✅Azure 数据资源管理器
在以下情况下,应使用 托管标识 配置连续导出作业:
- 当外部表使用模拟身份验证时
- 当查询引用其他数据库中的表时
- 当查询引用启用了 行级别安全策略的表时
使用托管标识配置的连续导出作业代表托管标识执行。
本文介绍如何配置系统分配的托管标识或用户分配的托管标识,以及使用该标识创建连续导出作业。
先决条件
- 群集和数据库。 创建群集和数据库。
- 所有数据库管理员对数据库的权限。
配置托管标识
有两种类型的托管标识:
系统分配:系统分配的标识连接到群集,并在删除群集时删除。 每个群集只允许一个系统分配的标识。
用户分配:用户分配的托管标识是独立的 Azure 资源。 可以将多个用户分配的标识分配给群集。
选择以下选项卡之一以设置首选托管标识类型。
按照步骤 添加用户分配的标识。
在 Azure 门户中的托管标识资源的左侧菜单中,选择 属性。 复制并保存 租户 ID 和 主体 ID,以便在以下步骤中使用。
运行以下 .alter-merge 策略managed_identity命令,将
<objectId>
替换为上一步中的托管标识对象 ID。 此命令在群集上设置 托管标识策略,该策略允许托管标识用于连续导出。.alter-merge cluster policy managed_identity ```[ { "ObjectId": "<objectId>", "AllowedUsages": "AutomatedFlows" } ]```
注意
若要对特定数据库设置策略,请使用
database <DatabaseName>
而不是cluster
。运行以下命令,授予托管标识 数据库查看器 用于连续导出的所有数据库的权限,例如包含外部表的数据库。
.add database <DatabaseName> viewers ('aadapp=<objectId>;<tenantId>')
将
<DatabaseName>
替换为相关数据库,<objectId>
步骤 2 中的托管标识 主体 ID,<tenantId>
步骤 2 中的Microsoft Entra ID 租户 ID。
设置外部表
外部表是指 Azure 存储中的数据,例如 Azure Blob 存储、Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2 或 SQL Server。
选择以下选项卡之一以设置 Azure 存储或 SQL Server 外部表。
根据 存储连接字符串模板创建连接字符串。 此字符串指示要访问的资源及其身份验证信息。 对于连续导出流,建议 模拟身份验证。
运行 .create 或 .alter external table 命令来创建表。 使用上一步中的连接字符串作为 storageConnectionString 参数。
例如,以下命令创建
MyExternalTable
,该MyExternalTable
引用 Azure Blob 存储中mystorageaccount
mycontainer
CSV 格式的数据。 该表有两列,一列用于整数x
,一列用于字符串s
。 连接字符串以;impersonate
结尾,指示使用模拟身份验证访问数据存储。.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv ( h@'https://mystorageaccount.blob.core.windows.net/mycontainer;impersonate' )
授予托管标识对相关外部数据存储的写入权限。 托管标识需要写入权限,因为连续导出作业代表托管标识将数据导出到数据存储。
外部数据存储 所需权限 授予权限 Azure Blob 存储 存储 Blob 数据参与者 分配 Azure 角色 Data Lake Storage Gen2 存储 Blob 数据参与者 分配 Azure 角色 Data Lake Storage Gen1 贡献 分配 Azure 角色
创建连续导出作业
选择以下选项卡之一,创建代表用户分配或系统分配的托管标识运行的连续导出作业。
运行 .create-or-alter continuous-export 命令,并将 managedIdentity
属性设置为托管标识对象 ID。
例如,以下命令创建一个名为 MyExport
的连续导出作业,以代表用户分配的托管标识将 MyTable
中的数据导出到 MyExternalTable
。
<objectId>
应该是托管标识对象 ID。
.create-or-alter continuous-export MyExport over (MyTable) to table MyExternalTable with (managedIdentity=<objectId>, intervalBetweenRuns=5m) <| MyTable