你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用 Azure Data Share 接受和接收数据
本教程介绍如何使用 Azure Data Share 接受数据共享邀请。 另外还介绍如何接收共享给你的数据,以及如何启用定期刷新时间间隔,确保共享给你的数据快照始终是最新的。
- 如何接受 Azure Data Share 邀请
- 创建 Azure Data Share 帐户
- 指定数据目标
- 创建按计划刷新的数据共享的订阅
先决条件
在接受数据共享邀请之前,必须创建一些 Azure 资源,这些资源已在下面列出。
确保在接受数据共享邀请之前已满足所有先决条件。
将数据接收到存储帐户
- 一个 Azure 存储帐户:如果没有,可以创建一个 Azure 存储帐户。
- 向存储帐户进行写入的权限,此权限位于 Microsoft.Storage/storageAccounts/write 中。 “存储帐户参与者”角色有此权限。
- 向存储帐户添加角色分配的权限,此权限存在于 Microsoft.Authorization/role assignments/write 中。 “所有者”角色有此权限。
将数据接收到基于 SQL 的目标中
如果选择将数据接收到 Azure SQL 数据库和 Azure Synapse Analytics,请查看以下相关先决条件的列表。
- Azure SQL 数据库或 Azure Synapse Analytics(以前称为 Azure SQL DW)。
- 向 SQL 服务器上的数据库进行写入的权限,此权限存在于 Microsoft.Sql/servers/databases/write 中。 “参与者”角色有此权限。
- SQL Server 的 Microsoft Entra 管理员
- SQL Server 防火墙访问权限。 可以通过以下步骤完成此操作:
- 在 Azure 门户中的 SQL Server 中,导航到“防火墙和虚拟网络”
- 对于“允许 Azure 服务和资源访问此服务器”,选择“是”。
- 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改。 下次从 Azure 门户共享 SQL 数据时,可能需要重复此过程。 还可以添加 IP 范围。
- 选择“保存”。
将数据接收到 Azure Synapse Analytics(工作区)SQL 池的先决条件
Azure Synapse Analytics(工作区)专用 SQL 池。 目前不支持将数据接收到无服务器 SQL 池中。
在 Synapse 工作区中写入 SQL 池的权限,该权限位于 Microsoft.Synapse/workspaces/sqlPools/write。 “参与者”角色有此权限。
Data Share 资源的托管标识用于访问 Synapse 工作区 SQL 池的权限。 可以通过以下步骤完成此操作:
在 Azure 门户中导航到 Synapse 工作区。 从左侧导航栏中选择“Microsoft Entra 管理员”,将你自己设置为“Microsoft Entra 管理员”。
打开 Synapse Studio,从左侧导航栏中选择“管理”。 在“安全性”下选择“访问控制”。 为自己分配“SQL 管理员”或“工作区管理员”角色 。
在 Synapse Studio 中,从左侧导航栏中选择“开发”。 在 SQL 池中执行以下脚本,以将 Data Share 资源托管标识添加为“db_datareader, db_datawriter, db_ddladmin”。
create user "<share_acc_name>" from external provider;
exec sp_addrolemember db_datareader, "<share_acc_name>";
exec sp_addrolemember db_datawriter, "<share_acc_name>";
exec sp_addrolemember db_ddladmin, "<share_acc_name>";
请注意,<share_acc_name> 是 Data Share 资源的名称。 如果尚未创建 Data Share 资源,则可以稍后返回到该先决条件。
Synapse 工作区防火墙访问权限。 可以通过以下步骤完成此操作:
- 在 Azure 门户中导航到 Synapse 工作区。 从左侧导航栏中选择“防火墙”。
- 对于“允许 Azure 服务和资源访问此工作区”,选择“启用”。
- 单击“+ 添加客户端 IP”。 客户端 IP 地址可能会更改。 下次从 Azure 门户共享 SQL 数据时,可能需要重复此过程。 还可以添加 IP 范围。
- 选择“保存”。
将数据接收到 Azure 数据资源管理器群集中:
- 数据提供程序的数据资源管理器群集所在的同一 Azure 数据中心内的 Azure 数据资源管理器群集:如果没有此群集,可以创建一个 Azure 数据资源管理器群集。 如果你不知道数据提供程序群集的 Azure 数据中心,可以稍后在此过程中创建群集。
- 向 Azure 数据资源管理器群集进行写入的权限,此权限存在于 Microsoft.Kusto/clusters/write 中。 “参与者”角色有此权限。
登录到 Azure 门户
登录 Azure 门户。
打开邀请
可以从电子邮件或直接从 Azure 门户打开邀请。
若要从电子邮件打开邀请,请检查收件箱中是否有来自数据提供程序的邀请。 邀请来自 Microsoft Azure,标题为“来自 yourdataprovider@domain.com 的 Azure Data Share 邀请”。 选择“查看邀请”,在 Azure 中查看邀请。
若要直接从 Azure 门户打开邀请,请在 Azure 门户中搜索“数据共享邀请” 。 此操作会转到“Data Share 邀请”列表。
如果你是租户的来宾用户,则在首次查看 Data Share 邀请之前,系统会要求你验证租户的电子邮件地址。 验证后,它将在 12 个月内有效。
选择要查看的邀请。
首先为 PowerShell 准备环境。 可以在本地运行 PowerShell 命令,也可以在 Azure Cloud Shell 中使用 Bash 环境。
- 如果选择在本地使用 Azure PowerShell:
- 如果选择使用 Azure Cloud Shell:
使用 Connect-AzAccount 命令连接到 Azure 帐户。
Connect-AzAccount
如果有多个订阅,请运行 Set-AzContext 命令来设置正确的订阅。
Set-AzContext [SubscriptionID/SubscriptionName]
运行 Get-AzDataShareReceivedInvitation 命令查看当前邀请:
Get-AzDataShareReceivedInvitation
复制你的邀请 ID 以便在下一部分中使用。
接受邀请
确保查看所有字段,包括“使用条款”。 如果同意使用条款,则必须勾选表示同意的框。
在“目标 Data Share 帐户”下选择要在其中部署 Data Share 的订阅和资源组。
对于“Data Share 帐户”字段,如果没有现有的 Data Share 帐户,请选择“新建”。 否则,请选择一个现有的 Data Share 帐户来接受数据共享。
对于“已接收共享的名称”字段,可以保留数据提供者指定的默认值,也可以为已接收共享指定新名称。
同意使用条款并指定用于管理已接收共享的数据共享帐户以后,请选择“接受并配置”。 将创建共享订阅。
此操作会将你转到 Data Share 帐户中接收的共享。
如果不想接受邀请,请选择“拒绝”。
使用 az datashare share-subscription create 命令创建 Data Share。
az datashare share-subscription create --resource-group share-rg \
--name "fabrikamsolutions" --account-name FabrikamDataShareAccount \
--invitation-id 89abcdef-0123-4567-89ab-cdef01234567 \
--source-share-location "East US 2"
使用 New-AzDataShareSubscription 命令创建 Data Share。 InvitationId 将是从上一步中收集的 ID。
New-AzDataShareSubscription -ResourceGroupName share-rg -AccountName FabrikamDataShareAccount -Name "Fabrikam Solutions" -InvitationId "89abcdef-0123-4567-89ab-cdef01234567"
按照以下步骤配置要接收数据的位置。
选择“数据集”选项卡。选中要为其分配目标位置的数据集旁边的复选框。 选择“+ 映射到目标”以选择目标数据存储。
选择以哪种目标数据存储类型保存数据。 目标数据存储中具有相同路径和名称的任何数据文件或表将被覆盖。 如果要将数据接收到 Azure SQL 数据库或 Azure Synapse Analytics(以前称为 Azure SQL DW)中,请选中复选框“允许‘数据共享’以我的名义运行上述‘创建用户’脚本”。
对于就地共享,请选择指定“位置”中的数据存储。 “位置”是数据提供程序的源数据存储所在的 Azure 数据中心。 映射数据集之后,可以通过目标路径中的链接来访问数据。
对于基于快照的共享,如果数据提供程序已创建定期更新数据的快照计划,你还可以通过选择“快照计划”选项卡来启用快照计划。选中快照计划旁边的框,然后选择“+ 启用”。 第一个计划快照将在计划时间的一分钟内启动,后续快照将在计划时间的几秒内启动。
每次运行后,复制文件的元数据不会保留。 这是设计的结果。
使用这些命令配置要接收数据的位置。
运行 az datashare consumer-source-data-set list 命令获取数据集 ID:
az datashare consumer-source-data-set list --resource-group "share-rg" \
--account-name "FabrikamDataShareAccount" \
--share-subscription-name "fabrikamsolutions" \
如果需要存储帐户,请运行 az storage account create 命令,为此 Data Share 创建存储帐户:
az storage account create --resource-group "share-rg" --name "FabrikamDataShareStorageAccount" \
使用 az storage account show 命令获取存储帐户 ID:
az storage account show --resource-group "share-rg" --name "FabrikamDataShareStorageAccount" \
--query "id"
使用以下命令获取帐户主体 ID:
az datashare account show --resource-group "share-rg" --name "FabrikamDataShareAccount" \
--query "identity.principalId"
使用 az role assignment create 命令以及帐户主体 ID 和存储帐户 ID 为帐户主体创建角色分配:
az role assignment create --role "Contributor" \
--assignee-object-id aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
--assignee-principal-type ServicePrincipal --scope "your\storage\account\id\path"
基于步骤 1 中的数据集 ID 为映射创建变量:
$mapping='{\"data_set_id\":\"' + $dataset_id + '\",\"container_name\":\"newcontainer\",
\"storage_account_name\":\"datashareconsumersa\",\"kind\":\"BlobFolder\",\"prefix\":\"consumer\"}'
使用 az datashare data-set-mapping create 命令创建数据集映射:
az datashare data-set-mapping create --account-name "FabrikamDataShareAccount" \
--data-set-mapping-name "datasetmapping" --resource-group "share-rg" \
--share-subscription-name "fabrikamsolutions" --blob-folder-data-set-mapping $mapping
运行 az datashare share-subscription synchronize 命令启动数据集同步。
az datashare share-subscription synchronize \
--resource-group "share-rg" --account-name "FabrikamDataShareAccount" \
--name "Fabrikam Solutions" --synchronization-mode "Incremental" \
运行 az datashare share-subscription list-synchronization 命令查看同步的列表:
az datashare share-subscription list-synchronization \
--resource-group "share-rg" --account-name "FabrikamDataShareAccount" \
--share-subscription-name "Fabrikam Solutions" \
使用 az datashare share-subscription list-source-share-synchronization-setting 命令查看在你的共享上设置的同步设置。
az datashare share-subscription list-source-share-synchronization-setting \
--resource-group "share-rg" --account-name "FabrikamDataShareAccount" \
--share-subscription-name "Fabrikam Solutions"
使用这些命令配置要接收数据的位置。
运行 Get-AzDataShareSourceDataSet 命令获取数据集 ID:
Get-AzDataShareSourceDataSet -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions"
如果还没有想要存储共享数据的位置,可以按照以下步骤创建存储帐户。 如果你已有存储,则可以跳到后续步骤。
运行 New-AzStorageAccount 命令创建 Azure 存储帐户:
$storageAccount = New-AzStorageAccount -ResourceGroupName "share-rg" -AccountName FabrikamStorageAccount -Location "East US 2" -SkuName Standard_GRS
$ctx = $storageAccount.Context
运行 New-AzStorageContainer 命令,在新的 Azure 存储帐户中创建一个容器并保存数据:
$containerName = "StorageContainer"
New-AzStorageContainer -Name $containerName -Context $ctx -Permission blob
运行 Set-AzStorageBlobContent 命令上传文件。 下面的示例将 textfile.csv 从本地内存上的 D:\testFiles 文件夹上传到创建的容器中。
Set-AzStorageBlobContent -File "D:\testFiles\textfile.csv" -Container $containerName -Blob "textfile.csv" -Context $ctx
有关在 powershell 中使用 Azure 存储的详细信息,请参阅此Azure 存储 PowerShell 指南。
使用 Get-AzStorageAccount 命令获取存储帐户 ID:
Get-AzStorageAccount -ResourceGroupName "share-rg" -Name FabrikamStorageAccount
使用第一步中的数据集 ID,然后运行 New-AzDataShareDataSetMapping 命令来创建数据集映射:
New-AzDataShareDataSetMapping -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions" -Name "Fabrikam Solutions" -StorageAccountResourceId "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" -DataSetId "0123abcd-ef01-2345-6789-abcdef012345" -Container "StorageContainer"
运行 Start-AzDataShareSubscriptionSynchronization 命令以启动数据集同步。
Start-AzDataShareSubscriptionSynchronization -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions" -SynchronizationMode "Incremental"
运行 Get-AzDataShareSubscriptionSynchronization 命令以查看同步列表:
Get-AzDataShareSubscriptionSynchronization -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions"
使用 Get-AzDataShareSubscriptionSynchronizationDetail 命令查看共享上设置的同步设置。
Get-AzDataShareSubscriptionSynchronizationDetail -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -ShareSubscriptionName "fabrikamsolutions" -SynchronizationId "a6ee5c8d-0ce0-485e-b2f2-966b187dc6c7"
触发快照
这些步骤仅适用于基于快照的共享。
可以通过依次选择“详细信息”选项卡、“触发快照”来触发快照 。 在这里,可以触发数据的完整或增量快照。 如果是首次从数据提供者处接收数据,请选择完整副本。
如果上次运行状态为“成功”,请转到目标数据存储来查看接收的数据。 选择“数据集”,然后选择“目标路径”中的链接。
运行 az datashare trigger create 命令来触发快照:
az datashare trigger create --account-name "FabrikamDataShareAccount" --resource-group "share-rg" --share-subscription-name "Fabrikam Solutions" --scheduled-trigger recurrence-interval="Day" synchronization-mode="Incremental" synchronization-time="2018-11-14T04:47:52.9614956Z" --name "Trigger1"
这些步骤仅适用于基于快照的共享。
运行 New-AzDataShareTrigger 命令以触发快照:
New-AzDataShareTrigger -ResourceGroupName "share-rg" -AccountName "FabrikamDataShareAccount" -Name "Fabrikam Solutions" -RecurrenceInterval "Day" -SynchronizationTime "2018-11-14T04:47:52.9614956Z"
查看历史记录
此步骤仅适用于基于快照的共享。 若要查看快照历史记录,请选择“历史记录”选项卡。在这里可以找到包含过去 30 天生成的所有快照的历史记录。
清理资源
当不再需要该资源时,请转到“数据共享概述”页面并选择“删除”以将其删除。
后续步骤
本教程介绍了如何接受和接收 Azure Data Share。 若要详细了解 Azure Data Share 概念,请继续了解 Azure Data Share 术语。