Compartilhar via

从 Azure Logic Apps 中的工作流连接到 SQL 数据库

适用于:Azure Logic Apps(消耗 + 标准)

本指南演示如何使用 SQL Server 连接器从 Azure Logic Apps 中的工作流访问 SQL 数据库。 然后,可以创建由 SQL 数据库或其他系统中的事件触发时运行的自动化工作流,并运行作来管理 SQL 数据和资源。

例如,工作流可以运行获取、插入和删除数据的操作,或者可以运行 SQL 查询和存储过程。 工作流可以检查非 SQL 数据库中的新记录,执行一些处理工作,使用结果在 SQL 数据库中创建新记录,以及发送有关新记录的电子邮件警报。

如果你不熟悉Azure Logic Apps,请参阅以下文章以开始使用:

支持的 SQL 版本

SQL Server 连接器支持以下 SQL 版本:

连接器技术参考

SQL Server连接器具有不同的版本,具体取决于 logic 应用类型和主机环境

逻辑应用程序 环境 连接器版本
消费 多租户Azure Logic Apps 托管连接器,该连接器显示在 “共享”下的连接器库中。 有关详细信息,请查看以下文档:

- SQL Server托管连接器参考
- Azure Logic Apps 中的托管连接器
标准 单租户 Azure Logic Apps 和 应用服务环境 v3(仅支持 Windows 计划) 托管连接器显示在 共享下的连接器库中,内置连接器显示在 内置 下的连接器库中,并且它是 以服务提供商为基础的。 内置连接器在以下方面有所不同:

- 内置连接器可以直接连接到 SQL 数据库,并使用连接字符串访问 Azure 虚拟网络,而不需要本地数据网关。

有关详细信息,请查看以下文档:

- SQL Server托管连接器参考
- SQL Server内置连接器参考
- Azure Logic Apps 中的内置连接器

限制

有关详细信息,请查看 SQL Server 托管连接器参考SQL Server 内置连接器参考

先决条件

  • Azure 帐户和订阅。 如果没有订阅,注册试用Azure订阅

  • SQL Server databaseAzure SQL DatabaseSQL Managed Instance

    SQL Server连接器要求您的表中包含数据,以便在调用连接器操作时返回结果。 例如,如果使用 Azure SQL Database,则可以使用包含的示例数据库尝试 SQL Server 连接器操作。

  • 创建 SQL 数据库连接所需的信息,例如 SQL Server 和数据库名称。 如果使用Windows身份验证或SQL Server身份验证来验证访问权限,则还需要用户名和密码。 通常可以在connection string中找到此信息。

    重要

    请确保您或其他用户仅拥有逻辑应用工作流所需的最低权限,以成功在数据库上执行所需的操作,例如读取和写入相关表的权限,以及执行任何必需的存储过程。 若要支持更改跟踪,需要权限,例如 VIEW CHANGE TRACKING 以及创建或使用 az_func 架构和 GlobalState 对象的任何权限。 仅在需要进行故障排除时才分配db_owner角色。

    重要

    如果使用直接从 Azure 门户复制的SQL Server connection string,则需要手动将密码添加到connection string。 对于敏感信息(比如这个字符串),确保使用最安全的身份验证流程。 Azure建议尽可能使用 managed identity 对Azure资源的访问权限进行身份验证,并分配具有最低特权的角色。

    如果此功能不可用,请确保通过其他措施(如 Azure Key Vault)保护连接字符串,这可与标准工作流中的 应用设置配合使用。 然后,可以直接引用安全字符串,例如连接字符串和密钥。 与 ARM 模板类似,在部署时可以定义环境变量,可以在标准逻辑应用工作流定义中定义应用设置。 然后,可以捕获动态生成的基础结构值,例如连接终结点、存储字符串等。 有关详细信息,请参阅Microsoft 标识平台的应用程序类型

    • 对于Azure中的 SQL 数据库,connection string采用以下格式:

      Server=tcp:{your-server-name}.database.chinacloudapi.cn,1433;Initial Catalog={your-database-name};Persist Security Info=False;User ID={your-user-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

      1. 若要在 Azure 门户中查找此字符串,请打开数据库。

      2. 在数据库菜单的“属性”下,选择“连接字符串”

    • 对于本地 SQL Server,connection string采用以下格式:

      Server={your-server-address};Database={your-database-name};User Id={your-user-name};Password={your-password};

  • 在标准工作流中,若要使用 SQL 内置触发器,必须在要使用触发器的表中启用更改跟踪。 有关详细信息,请参阅启用和禁用更改跟踪

  • 您希望在其中访问 SQL 数据库的逻辑应用程序工作流。 若要使用SQL Server触发器启动工作流,必须从空白工作流开始。 要使用 SQL Server 操作,使用任何触发器启动工作流。

  • 若要连接到本地 SQL 服务器,根据你是否具有消耗型或标准型逻辑应用工作流,需要满足以下额外要求。

    • 消耗型工作流:

      在多租户 Azure Logic Apps 中,您需要在本地计算机上安装 本地数据网关,还需有一个已在 Azure 中创建的 数据网关资源

    • 标准工作流:

      可以使用SQL Server内置连接器或托管连接器。

      • 若要对逻辑应用使用Microsoft Entra身份验证或托管标识身份验证,必须设置SQL Server才能使用这些身份验证类型。 有关详细信息,请参阅 身份验证 - SQL Server 管理连接器参考

      • 若要使用内置连接器,可以使用托管标识、Microsoft Entra ID或connection string对连接进行身份验证。 可以通过在connection string中指定参数来调整连接池。 有关详细信息,请参阅连接池

      • 若要使用SQL Server托管连接器,请遵循与多租户Azure Logic Apps中的消耗逻辑应用工作流相同的要求。 有关其他连接器要求,请查看 SQL Server 托管连接器参考

添加SQL Server触发器

以下步骤使用 Azure 门户,但具有相应的Azure Logic Apps扩展,还可以使用以下工具来创建逻辑应用工作流:

  1. Azure 门户中,打开你的 Consumption Logic App 资源。

  2. 在“资源边栏”菜单的 “开发工具”下,选择设计器以打开空白工作流。

  3. 在所需场景中,按照添加触发器的一般步骤,添加您想要的 SQL Server 托管触发器

    此示例继续讲述名为“创建项时”的SQL Server触发器。

  4. 在系统提示时提供连接的相关信息。 完成后,选择“ 新建”。

  5. 触发器信息框出现后,请为所选触发器提供所需的必要信息。

    对于此示例,在名为 When an item is created 的触发器中,提供 SQL Server 名称和数据库名称的值(如果以前未提供)。 否则,请从“表格名称”列表中选择要使用的表格。 选择“频率”和“间隔”,以设置触发器检查新项目的计划。

    显示消耗工作流设计器以及名为 When an item is created 的托管操作的屏幕截图。

  6. “高级参数 ”列表中添加所需的任何其他可用参数。

    此触发器仅从选定表返回一个行,不返回其他内容。 若要执行其他任务,请继续添加SQL Server连接器操作或其他执行逻辑应用工作流中您需要的下一个任务的操作。

    例如,若要查看此行中的数据,可以添加其他操作(用于创建一个文件,其字段来自返回的行),然后发送电子邮件警报。 若要了解此连接器的其他可用作,请参阅 SQL Server 托管连接器参考

  7. 完成后,保存工作流。 在设计器工具栏上选择“保存”。

保存工作流时,此步骤会自动将更新发布到部署的逻辑应用,该应用位于Azure中。 如果只使用触发器,工作流将仅根据指定的计划检查 SQL 数据库。 必须添加一项操作来响应触发器。

添加SQL Server操作

以下步骤使用 Azure 门户,但具有适当的Azure Logic Apps扩展,还可以使用以下工具来生成逻辑应用工作流:

在此示例中,逻辑应用程序工作流从重复触发器开始,并调用一个动作从SQL数据库获取一行数据。

  1. Azure 门户中,打开你的 Consumption Logic App 资源。

  2. 在“资源边栏”菜单的 “开发工具”下,选择设计器以打开工作流。

  3. 按照添加操作的一般步骤,添加您想要的SQL Server托管操作

    此示例继续执行名为 SQL Server获取行 操作,该操作获取单个记录。

  4. 在系统提示时提供连接的相关信息。 完成操作后,选择“创建”。

  5. 操作信息框出现后,从“表名称”列表中选择要使用的表。 在“行 ID”属性中,输入所需记录的 ID

    在本示例中,表名为 SalesLT.Customer。

    显示消耗工作流设计器以及名为 Get row 的操作的屏幕截图,其中包含示例表名和空白行 ID。

    此操作仅从选定表返回一行,不返回其他数据。 若要查看此行中的数据,请添加其他操作。 例如,此类操作可能会创建一个文件,包括返回行中的字段,并将文件存储在云存储帐户中。 若要了解有关此连接器的其他可用操作,请参阅连接器的参考页

  6. 完成后,保存工作流。 在设计器工具栏上选择“保存”。

连接到您的数据库

添加触发器或操作以连接到某个服务或系统时,如果没有现有的或活跃的连接,Azure Logic Apps 会提示你提供连接信息,具体信息因连接类型而有所不同,例如:

  • 要用于连接的名称
  • 帐户凭据
  • 服务器或系统名称
  • 连接字符串
  • 要使用的身份验证类型

提供此信息后,请根据目标数据库继续执行以下步骤:

连接到Azure SQL Database或SQL Managed Instance

若要在不使用本地数据网关的情况下访问SQL Managed Instance,必须在 Azure SQL Managed Instance 中配置公共终结点。 公共终结点使用端口 3342,因此请确保从逻辑应用创建连接时指定此端口号。

在连接信息框中,完成以下步骤:

  1. 对于“连接名称”,请为连接提供一个名称

  2. 对于 Authentication 类型,请在 Azure SQL Database 或 SQL Managed Instance 中选择所需的身份验证并在数据库上启用:

    身份验证 说明
    连接字符串 仅在具有SQL Server内置连接器的标准工作流中受支持。

    需要您的SQL Server和数据库的连接字符串。
    Active Directory OAuth 仅在具有SQL Server内置连接器的标准工作流中受支持。 有关详细信息,请参阅以下文档:

    - SQL Server 连接器的身份验证
    - 启用 OAuth 2.0,其用户标识为 Microsoft Entra ID
    逻辑应用托管标识 SQL Server托管连接器支持。 在标准工作流中,此身份验证类型可用于SQL Server内置连接器,但该选项改为命名为 Managed identity

    需要以下项:

    - 有效托管身份,该身份已在逻辑应用资源上启用并有权访问您的数据库。

    - SQL DB 参与者角色访问SQL Server资源

    --- Contributor访问包含SQL Server资源的资源组。

    有关详细信息,请参阅以下文档:

    - 托管身份验证用于 SQL Server 连接器
    - 服务器级角色
    服务主体(Microsoft Entra应用程序) SQL Server托管连接器支持。

    需要 Microsoft Entra 应用程序和服务主体。 有关详细信息,请参阅 创建可以使用 Azure 门户访问资源的Microsoft Entra应用程序和服务主体
    Microsoft Entra集成 SQL Server托管连接器支持。

    需要在逻辑应用资源上启用Microsoft Entra中有效的托管标识并且有权访问数据库。 有关详细信息,请参阅以下文章:

    - Azure SQL安全性概述 - 身份验证
    - 授权数据库访问Azure SQL - 身份验证和授权
    - 适用于Azure SQL的Microsoft Entra身份验证
    SQL Server身份验证 SQL Server托管连接器支持。

    需要以下项:

    - 之前在 Azure 为您的连接创建的数据网关资源,无论您的逻辑应用是否位于多租户的 Azure 逻辑应用环境中。

    - 在SQL Server数据库中创建和存储的有效用户名和强密码。 有关详细信息,请参阅以下文章:

    - Azure SQL安全性概述 - 身份验证
    - 授权数据库访问Azure SQL - 身份验证和授权

    以下示例显示了在使用 SQL Server managed 连接器并选择 Microsoft Entra 集成身份验证时连接信息框的显示方式:

    屏幕截图显示了带有所选身份验证类型的 SQL Server 云连接信息。

  3. 选择 Microsoft Entra 集成后,选择 Sign in。 根据是使用Azure SQL Database还是SQL Managed Instance,选择用户凭据进行身份验证。

  4. 为你的数据库选择以下值:

    属性 必选 说明
    服务器名称 SQL Server 的地址,例如,Fabrikam-Azure-SQL.database.chinacloudapi.cn
    数据库名称 SQL 数据库的名称,例如,Fabrikam-Azure-SQL-DB
    表名称 要使用的表,例如 SalesLT.Customer

    提示

    若要提供数据库和表信息,可使用以下选项:

    • 在数据库的connection string中找到此信息。 例如,在Azure门户中,查找并打开数据库。 在数据库菜单上,选择可以在其中找到以下字符串的“连接字符串”或“属性”

      Server=tcp:{your-server-address}.database.chinacloudapi.cn,1433;Initial Catalog={your-database-name};Persist Security Info=False;User ID={your-user-name};Password={your-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;

    • 默认情况下,系统数据库中的表将被筛选掉,因此当你选择系统数据库时,它们可能不会自动出现。 或者可以从数据库列表中选择“输入自定义值”后,手动输入表名称

    此数据库信息框类似于以下示例:

    屏幕截图显示了包含示例值的 SQL 云数据库信息。

  5. 现在,继续在添加 SQL 触发器添加 SQL 操作中执行你尚未完成的步骤。

连接到本地SQL Server

在连接信息框中,完成以下步骤:

  1. 对于需要本地数据网关的到本地 SQL Server 的连接,请确保已完成这些先决条件

    否则,当你创建连接时,你的数据网关资源不会显示在“连接网关”列表中。

  2. 对于 Authentication Type,请选择所需的身份验证并在SQL Server上启用:

    身份验证 说明
    SQL Server身份验证 SQL Server托管连接器和SQL Server内置连接器支持。

    需要以下项:

    - 之前在 Azure 为您的连接创建的数据网关资源,无论您的逻辑应用是否位于多租户的 Azure 逻辑应用环境中。

    - 在SQL Server中创建和存储的有效用户名和强密码。

    有关详细信息,请参阅 SQL Server Authentication
    Windows 身份验证 SQL Server托管连接器支持。

    需要以下项:

    - 之前在 Azure 为您的连接创建的数据网关资源,无论您的逻辑应用是否位于多租户的 Azure 逻辑应用环境中。

    - 有效的Windows用户名和密码,用于通过Windows帐户确认身份。

    有关详细信息,请参阅 Windows 身份验证
  3. 为你的 SQL 数据库选择或提供以下值:

    属性 必选 说明
    SQL Server 名称 SQL Server 的地址,例如,Fabrikam-Azure-SQL.database.chinacloudapi.cn
    SQL 数据库名称 SQL Server数据库的名称,例如Fabrikam-Azure-SQL-DB
    用户名 你的 SQL 服务器和数据库的用户名
    密码 你用于 SQL Server 和数据库的密码
    Subscription 是的,用于 Windows 身份验证 您之前在Azure中创建的数据网关资源的Azure订阅
    连接网关 是的,用于 Windows 身份验证 之前在Azure中创建的数据网关资源的名称

    提示:如果网关未出现在列表中,请检查是否已经正确设置网关

    提示

    可以在数据库的connection string中找到此信息:

    • Server={your-server-address}
    • Database={your-database-name}
    • User ID={your-user-name}
    • Password={your-password}

    以下示例显示选择 Windows 身份验证时连接信息框的显示方式。

    截图显示具有所选身份验证的SQL Server 本地连接信息。

  4. 准备就绪后,选择“创建”。

  5. 继续执行尚未在 “添加 SQL 触发器”“添加 SQL 操作” 中完成的步骤。

处理批量数据

有时,你处理的结果集非常大,以致于连接器无法同时返回所有结果。 或者,你希望更好地控制结果集的大小和结构。 以下列表包括一些可用于处理此类大型结果集的方法:

  • 为了帮助你将结果作为多个较小的集进行管理,请启用“分页”。 有关详细信息,请参阅 在 Azure Logic Apps 中使用分页功能获取更多数据、项或记录。 有关详细信息,请参阅通过 SQL 分页使用逻辑应用进行批量数据传输

  • 创建一个按所需方式组织结果的存储过程。 SQL Server连接器提供了许多后端功能,可以使用Azure Logic Apps访问这些功能,以便更轻松地自动执行使用 SQL 数据库表的业务任务。

    当 SQL 操作获取或插入多行时,逻辑应用工作流可以在这些限制内使用 until 循环循环访问这些行。 但是,当逻辑应用必须处理非常大的记录(例如,数千或数百万行)时,你希望将调用数据库的成本降到最低。

    若要按所需方式组织结果,可以创建在 SQL 实例中运行的存储过程并使用 SELECT - ORDER BY 语句。 此解决方案可以更好地控制结果的大小和结构。 逻辑应用通过使用 SQL Server 连接器的 执行存储过程操作来调用存储过程。 有关详细信息,请参阅 SELECT - ORDER BY 子句

    注意

    SQL Server连接器具有存储过程超时限制,不超过 2 分钟。 某些存储过程可能需要超过此限制才能完成,从而导致 504 Timeout 错误。 可使用 SQL 完成触发器、本机 SQL 传递查询、状态表和服务器端作业来解决此问题。

    对于此任务,可以将 Azure 弹性作业代理用于 Azure SQL Database。 对于本地SQL ServerSQL Managed Instance,可以使用 SQL Server Agent。 若要了解更多信息,请参阅 Azure Logic Apps 的 SQL Server 连接器中的处理长时间运行的存储过程超时

处理动态批量数据

使用 SQL Server 连接器调用存储过程时,返回的输出有时是动态的。 在这种情况下,请执行以下步骤:

  1. Azure 门户中,在设计器中打开逻辑应用和工作流。

  2. 通过执行测试运行来查看输出格式。 复制并保存示例输出。

  3. 在设计器中,在调用存储过程的操作下,添加名为 Parse JSON 的内置操作。

  4. 在“分析 JSON”操作中,选择“使用示例有效负载生成架构”

  5. 在“输入或粘贴示例 JSON 有效负载”框中,粘贴示例输出,然后选择“完成”

    注意

    如果收到Azure Logic Apps无法生成架构的错误,请检查示例输出的语法的格式是否正确。 如果仍无法生成架构,请在“架构”框中手动输入架构。

  6. 完成后,保存工作流。

  7. 若要引用 JSON 内容属性,请执行以下步骤:

    1. 在要引用 JSON 属性的编辑框中选择。
    2. 选择闪电图标打开动态内容列表。
    3. 从列表中,在 “分析 JSON ”部分中,为所需的 JSON 内容属性选择数据令牌。