本教程介绍如何使用 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 Server 上的数据库进行写入的权限,该权限存在于 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 命令以上传一个文件。 以下示例 将本地 内存上的 D:\testFiles 文件夹textfile.csv上传到创建的容器。
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 天内生成的所有快照的历史记录。
清理资源
不再需要资源时,请转到“Data Share 概述”页,然后选择“ 删除 ”将其删除。
后续步骤
本教程介绍了如何接受和接收 Azure Data Share。 若要详细了解 Azure Data Share 概念,请继续学习 Azure Data Share 术语。