使用专用终结点将数据从 Azure Blob 存储安全复制到 SQL 数据库

适用于:Azure 数据工厂

在本教程中,请使用 Azure 数据工厂用户界面 (UI) 创建数据工厂。 此数据工厂中的管道使用 Azure 数据工厂管理的虚拟网络中的专用终结点将数据从 Azure Blob 存储安全地复制到 Azure SQL 数据库(均允许仅访问选定的网络)。 本教程中的配置模式适用于从基于文件的数据存储复制到关系数据存储。 如需支持作为源和接收器的数据存储的列表,请参阅支持的数据存储和格式表。

注意

如果对数据工厂不熟悉,请参阅 Azure 数据工厂简介

在本教程中,将执行以下步骤:

  • 创建数据工厂。
  • 创建包含复制活动的管道。

先决条件

  • Azure 订阅。 如果没有 Azure 订阅,请在开始前创建一个试用 Azure 帐户
  • Azure 存储帐户。 可将 Blob 存储用作源数据存储。 如果没有存储帐户,请参阅创建 Azure 存储帐户以获取创建步骤。 确保存储帐户仅允许来自选定的网络的访问。
  • Azure SQL 数据库。 将数据库用作接收器数据存储。 如果没有 Azure SQL 数据库,请参阅创建 SQL 数据库,了解创建该数据库的步骤。 确保 SQL 数据库帐户仅允许来自选定的网络的访问。

创建 blob 和 SQL 表

现在,请执行以下步骤来准备本教程所需的 blob 存储和 SQL 数据库。

创建源 blob

  1. 打开记事本。 复制以下文本并将其在磁盘上另存为 emp.txt 文件:

    FirstName,LastName
    John,Doe
    Jane,Doe
    
  2. 在 blob 存储中创建名为 adftutorial 的容器。 在该容器中创建名为 input 的文件夹。 然后,将 emp.txt 文件上传到 input 文件夹。 请使用 Azure 门户或工具(例如 Azure 存储资源管理器)执行这些任务。

创建接收器 SQL 表

使用以下 SQL 脚本在 SQL 数据库中创建 dbo.emp 表:

CREATE TABLE dbo.emp
(
    ID int IDENTITY(1,1) NOT NULL,
    FirstName varchar(50),
    LastName varchar(50)
)
GO

CREATE CLUSTERED INDEX IX_emp_ID ON dbo.emp (ID);

创建数据工厂

在此步骤中,请先创建数据工厂,然后启动数据工厂 UI,在该数据工厂中创建一个管道。

  1. 打开 Microsoft Edge 或 Google Chrome。 目前,只有 Microsoft Edge 和 Google Chrome web 浏览器支持数据工厂 UI。

  2. 在左侧菜单中,选择"在数据工厂 数据 + 分析资源"。

  3. 在“新建数据工厂”页的“名称”下输入 ADFTutorialDataFactory

    Azure 数据工厂的名称必须 全局唯一。 如果收到有关名称值的错误消息,请为数据工厂输入其他名称(例如 yournameADFTutorialDataFactory)。 有关数据工厂项目的命名规则,请参阅数据工厂命名规则

  4. 选择要在其中创建数据工厂的 Azure 订阅

  5. 对于“资源组”,请执行以下步骤之一:

    • 选择“使用现有资源组”,并从下拉列表选择现有的资源组。
    • 选择“新建”,并输入资源组的名称。

    若要了解资源组,请参阅使用资源组管理 Azure 资源

  6. 在“位置”下选择数据工厂所在的位置。 下拉列表中仅显示支持的位置。 数据工厂使用的数据存储(例如,Azure 存储和 SQL 数据库)和计算资源(例如,Azure HDInsight)可以位于其他区域。

  7. 选择“创建” 。

  8. 创建完成后,通知中心内会显示通知。 选择“转到资源”,转到“数据工厂”页 。

  9. 在“打开 Azure 数据工厂工作室”磁贴上选择“打开”,在单独的选项卡中启动数据工厂 UI。

在数据工厂托管的虚拟网络中创建 Azure 集成运行时

在此步骤中,你将创建一个 Azure 集成运行时并启用数据工厂托管的虚拟网络。

  1. 在数据工厂门户中,转到“管理”并选择“新建”,以创建新的 Azure 集成运行时 。

    屏幕截图显示创建新的 Azure 集成运行时。

  2. 在“集成运行时安装”页上,根据所需的功能选择要创建的集成运行时。 在本教程中,选择“Azure”、“自承载”,然后单击“继续” 。

  3. 选择“Azure”,然后单击“继续”以创建 Azure 集成运行时 。

    屏幕截图显示新的 Azure 集成运行时。

  4. 在“虚拟网络配置(预览)”下,选择“启用” 。

    屏幕截图显示启用新的 Azure 集成运行时。

  5. 选择“创建”。

创建管道

本步骤在数据工厂中创建包含复制活动的管道。 复制活动将数据从 Blob 存储复制到 SQL 数据库。 在快速入门教程中,已通过以下步骤创建一个管道:

  1. 创建链接服务。
  2. 创建输入和输出数据集。
  3. 创建管道。

在本教程中,你将从创建管道开始。 然后在配置管道时根据需要创建链接服务和数据集。

  1. 在主页上,选择“协调”。

    显示 ADF 主页的屏幕截图。

  2. 在管道的属性窗格中,输入“CopyPipeline”作为管道名称。

  3. 在“活动”工具箱中,展开“移动和转换”类别,然后将“复制数据”活动从工具箱拖动到管道设计器图面 。 输入“CopyFromBlobToSql”作为名称。

    屏幕截图显示复制活动。

配置源

提示

本教程使用“帐户密钥”作为源数据存储的身份验证类型。 如果需要,还可以选择其他受支持的身份验证方法,例如 SAS URI、服务主体和托管标识 。 有关详细信息,请参阅使用 Azure 数据工厂在 Azure Blob 存储中复制和转换数据中的相应部分。

为了安全地存储数据存储的机密,还建议使用 Azure Key Vault。 有关详细信息和说明,请参阅在 Azure Key Vault 中存储凭据

创建源数据集和链接服务

  1. 转到“源”选项卡。选择“+ 新建”创建源数据集。

  2. 在“新建数据集”对话框中选择“Azure Blob 存储”,然后选择“继续”。 源数据位于 Blob 存储中,因此选择“Azure Blob 存储”作为源数据集。

  3. 在“选择格式”对话框中选择数据的格式类型,然后选择“继续” 。

  4. 在“设置属性”对话框中,输入“SourceBlobDataset”作为“名称” 。 选中“第一行作为标题”复选框。 在“链接服务”文本框下,选择“+ 新建”。

  5. 在“新建链接服务(Azure Blob 存储)”对话框中,输入“AzureStorageLinkedService”作为“名称”,然后从“存储帐户名称”列表中选择你的存储帐户 。

  6. 请确保启用“交互式创作”。 启用可能需要大约 1 分钟的时间。

    显示交互式创作的屏幕截图。

  7. 选择“测试连接”。 当存储帐户仅允许从“选定的网络”访问,并要求数据工厂为其创建专用终结点(使用该终结点之前需要获得批准)时,测试连接应会失败。 在错误消息中,应会看到一个用于创建专用终结点的链接,可以通过该链接创建托管的专用终结点。 一种替代方法是直接转到“管理”选项卡,按照下一节中的说明创建托管专用终结点。

    注意

    “管理”选项卡可能并非适用于所有数据工厂实例。 如果看不到专用终结点,可以通过选择"创作连接专用终结点"来访问专用终结点

  8. 让对话框保持打开状态,然后转到存储帐户。

  9. 按照此部分中的说明批准专用链接。

  10. 返回对话框。 再次选择“测试连接”,然后选择“创建”以部署链接服务 。

  11. 创建链接服务后,将返回到“设置属性”页。 在“文件路径”旁边,选择“浏览”。

  12. 转到 adftutorial/input 文件夹,选择 emp.txt 文件,然后选择“确定” 。

  13. 选择“确定”。 将自动转到管道页。 在“源”选项卡中,确认已选择“SourceBlobDataset” 。 若要预览此页上的数据,请选择“预览数据”。

    显示源数据集的屏幕截图。

创建托管专用终结点

如果在测试连接时未选择超链接,请按照路径操作。 现在,需要创建一个托管的专用终结点,并将该终结点连接到你创建的链接服务。

  1. 转到“管理”选项卡。

    注意

    “管理”选项卡可能并非适用于所有数据工厂实例。 如果看不到专用终结点,可以通过选择"创作连接专用终结点"来访问专用终结点

  2. 转到“托管专用终结点”部分。

  3. 选择“托管专用终结点”下的“+ 新建” 。

    显示托管专用终结点“新建”按钮的屏幕截图。

  4. 从列表中选择“Azure Blob 存储”磁贴,然后选择“继续” 。

  5. 输入创建的存储帐户的名称。

  6. 选择“创建”。

  7. 几秒钟后,应会显示创建的专用链接需要审批。

  8. 选择创建的专用终结点。 可以看到一个超链接,该超链接将引导你在存储帐户级别批准专用终结点。

    显示托管专用终结点窗格的屏幕截图。

  1. 在存储帐户中,转到“设置”部分下的“专用终结点连接” 。

  2. 选中创建的专用终结点复选框,并选择“批准”。

    显示专用终结点的“批准”按钮的屏幕截图。

  3. 添加描述,然后选择“是”。

  4. 返回到数据工厂中“管理”选项卡的“托管专用终结点”部分 。

  5. 大约一两分钟后,数据工厂 UI 中应会出现对专用终结点的批准。

配置接收器

提示

本教程使用“SQL 身份验证”作为接收器数据存储的身份验证类型。 如果需要,还可以选择其他受支持的身份验证方法,例如服务主体和托管标识 。 有关详细信息,请参阅使用 Azure 数据工厂在 Azure SQL 数据库中复制和转换数据中的相应部分。

为了安全地存储数据存储的机密,还建议使用 Azure Key Vault。 有关详细信息和说明,请参阅在 Azure Key Vault 中存储凭据

创建接收器数据集和链接服务

  1. 转到“接收器”选项卡,选择“+ 新建”,创建一个接收器数据集。

  2. 在“新建数据集”对话框中,在搜索框中输入“SQL”,以筛选连接器 。 选择“Azure SQL 数据库”,然后选择“继续” 。 在本教程中,请将数据复制到 SQL 数据库。

  3. 在“设置属性”对话框中,输入“OutputSqlDataset”作为“名称” 。 从“链接服务”下拉列表中,选择“+ 新建” 。 数据集必须与链接服务相关联。 该链接服务包含的连接字符串可供数据工厂用于在运行时连接到 SQL 数据库。 数据集指定可将数据复制到其中的容器、文件夹和文件(可选)。

  4. 在“新建链接服务(Azure SQL 数据库)”对话框中执行以下步骤:

    1. 在“名称”下输入 AzureSqlDatabaseLinkedService
    2. 在“服务器名称”下选择 SQL Server 实例。
    3. 请确保启用“交互式创作”。
    4. 在“数据库名称”下选择自己的 SQL 数据库。
    5. 在“用户名”下输入用户的名称。
    6. 在“密码”下输入用户的密码。
    7. 选择“测试连接”。 测试连接应会失败,因为 SQL Server 仅允许从“选定的网络”访问,并要求数据工厂为其创建专用终结点(使用该终结点之前需要获得批准)。 在错误消息中,应会看到一个用于创建专用终结点的链接,可以通过该链接创建托管的专用终结点。 一种替代方法是直接转到“管理”选项卡,按照下一节中的说明创建托管专用终结点。
    8. 让对话框保持打开状态,然后转到选定的 SQL Server。
    9. 按照此部分中的说明批准专用链接。
    10. 返回对话框。 再次选择“测试连接”,然后选择“创建”以部署链接服务 。
  5. 将自动转到“设置属性”对话框。 在“表”中选择“[dbo].[emp]”。 然后选择“确定”。

  6. 转到“管道”选项卡,然后在“接收器数据集”中,确认已选中“OutputSqlDataset” 。

    显示“管道”选项卡的屏幕截图。

可以选择按照复制活动中的架构映射中所述将源架构映射到对应的目标架构。

创建托管专用终结点

如果在测试连接时未选择超链接,请按照路径操作。 现在,需要创建一个托管的专用终结点,并将该终结点连接到你创建的链接服务。

  1. 转到“管理”选项卡。

  2. 转到“托管专用终结点”部分。

  3. 选择“托管专用终结点”下的“+ 新建” 。

    显示托管专用终结点“新建”按钮的屏幕截图。

  4. 从列表中选择“Azure SQL 数据库”磁贴,然后选择“继续” 。

  5. 输入所选的 SQL Server 的名称。

  6. 选择“创建” 。

  7. 几秒钟后,应会显示创建的专用链接需要审批。

  8. 选择创建的专用终结点。 可以看到一个超链接,该超链接将引导你在 SQL Server 级别批准专用终结点。

  1. 在 SQL Server 中,转到“设置”部分下的“专用终结点连接” 。
  2. 选中创建的专用终结点复选框,并选择“批准”。
  3. 添加描述,然后选择“是”。
  4. 返回到数据工厂中“管理”选项卡的“托管专用终结点”部分 。
  5. 需要一到两分钟的时间才能显示针对专用终结点的批准。

调试和发布管道

可以先调试管道,然后再将项目(链接服务、数据集和管道)发布到数据工厂或自己的 Azure Repos GIT 存储库。

  1. 若要调试管道,请在工具栏上选择“调试”。 可以在窗口底部的“输出”选项卡中看到管道运行的状态。
  2. 在管道可以成功运行后,在顶部工具栏中选择“全部发布”。 此操作将所创建的实体(数据集和管道)发布到数据工厂。
  3. 等待“已成功发布”消息出现。 若要查看通知消息,请选择右上角的“显示通知”(铃铛按钮)。

总结

此示例中的管道使用数据工厂托管虚拟网络中的专用终结点将数据从 Blob 存储复制到 SQL 数据库。 你已了解如何执行以下操作:

  • 创建数据工厂。
  • 创建包含复制活动的管道。