你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用托管标识运行连续导出作业

连续导出作业使用定期运行的查询将数据导出到外部表

在以下情况下,应使用托管标识配置连续导出作业:

  • 当外部表使用模拟身份验证时。
  • 当查询引用其他数据库中的表时。
  • 当查询引用启用了行级别安全策略的表时。

使用托管标识配置的连续导出作业将代表该托管标识执行。

本文介绍如何配置系统分配或用户分配的托管标识,并使用该标识创建连续导出作业。

先决条件

配置托管标识

托管标识分为两种类型:

  • 系统分配:系统分配的标识将连接到群集,删除该群集时也会删除该标识。 对于每个群集,只能分配一个系统分配的标识。

  • 用户分配:用户分配的托管标识是独立的 Azure 资源。 可以将多个用户分配的标识分配给群集。

选择以下选项卡之一来设置首选的托管标识类型。

  1. 按照步骤添加用户分配的标识

  2. 在 Azure 门户中,在托管标识资源的左侧菜单中选择“属性”。 复制并保存“租户 ID”和“主体 ID”,以便在后续步骤中使用。

    包含托管标识 ID 的Azure 门户区域的屏幕截图。

  3. 运行以下 .alter-merge policy managed_identity 命令,将 <objectId> 替换为上一步中的托管标识对象 ID。 此命令对群集设置托管标识策略,以便能够将托管标识用于连续导出。

    .alter-merge cluster policy managed_identity ```[
        {
          "ObjectId": "<objectId>",
          "AllowedUsages": "AutomatedFlows"
        }
    ]```
    

    注意

    若要对特定数据库设置策略,请使用 database <DatabaseName> 而不是 cluster

  4. 运行以下命令,以向托管标识授予对用于连续导出的所有数据库(例如包含外部表的数据库)的数据库查看者权限。

    .add database <DatabaseName> viewers ('aadapp=<objectId>;<tenantId>')
    

    将 替换为相关数据库,<objectId>将 替换为<DatabaseName>步骤 2 中的托管标识主体 ID,将 <tenantId> 替换为步骤 2 中的Microsoft Entra ID 租户 ID

设置外部表

外部表引用 Azure Blob 存储、Azure Data Lake Gen1 和 Azure Data Lake Gen2 等 Azure 存储或 SQL Server 中的数据。

选择以下选项卡之一来设置 Azure 存储或 SQL Server 外部表。

  1. 基于存储连接字符串模板创建连接字符串。 此字符串指示要访问的资源及其身份验证信息。 对于连续导出流,我们建议使用模拟身份验证

  2. 运行 .create 或 .alter external table 以创建表。 使用在上一步骤中获取的连接字符串作为 storageConnectionString 参数。

    例如,以下命令创建 MyExternalTable,该表引用 Azure Blob 存储中 mystorageaccountmycontainer 中的 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' 
    )
    
  3. 授予托管标识对相关外部数据存储的写入权限。 托管标识之所以需要写入权限,是因为连续导出作业代表该托管标识将数据导出到数据存储。

    外部数据存储 所需的权限 授予权限
    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