从 Azure 逻辑应用中的工作流连接到 SQL 数据库
适用范围:Azure 逻辑应用(消耗型 + 标准型)
本操作指南介绍如何使用 SQL Server 连接器从 Azure 逻辑应用中的工作流访问 SQL 数据库。 然后,可以创建由 SQL 数据库或其他系统中的事件触发后运行的自动化工作流,并运行操作来管理 SQL 数据和资源。
例如,工作流可以运行获取、插入和删除数据的操作,或者可以运行 SQL 查询和存储过程。 工作流可以检查非 SQL 数据库中的新记录,执行一些处理工作,使用结果在 SQL 数据库中创建新记录,以及发送有关新记录的电子邮件警报。
如果你不熟悉 Azure 逻辑应用,请查看以下入门文档:
支持的 SQL 版本
SQL Server 连接器支持以下 SQL 版本:
连接器技术参考
SQL Server 连接器具有不同的版本,具体取决于逻辑应用类型和主机环境。
逻辑应用 | 环境 | 连接器版本 |
---|---|---|
消耗 | 多租户 Azure 逻辑应用 | 托管连接器,该连接器显示在连接器库中“运行时”>“共享”下。 有关详细信息,请查看以下文档: - SQL Server 托管连接器参考 - Azure 逻辑应用中的托管连接器 |
标准 | 单租户 Azure 逻辑应用和应用服务环境 v3(仅限 Windows 计划) | 托管连接器显示在连接器库中的“运行时”>“共享”下,而内置连接器显示在连接器库中的“运行时”>“应用内”下,并且是基于服务提供商的。 内置连接器在以下方面有所不同: - 内置连接器可以直接连接到 SQL 数据库,并通过使用连接字符串访问 Azure 虚拟网络,而无需本地数据网关。 有关详细信息,请查看以下文档: - SQL Server 托管连接器参考 - SQL Server 内置连接器参考 - Azure 逻辑应用中的内置连接器 |
限制
有关详细信息,请参阅 SQL Server 托管连接器参考或 SQL Server 内置连接器参考。
先决条件
Azure 帐户和订阅。 如果没有订阅,请注册试用版 Azure 订阅。
SQL Server 数据库、Azure SQL 数据库或 SQL 托管实例。
SQL Server 连接器要求表包含数据,以便在调用连接器操作时可以返回结果。 例如,如果使用 Azure SQL 数据库,则可以使用包含的示例数据库来尝试 SQL Server 连接器操作。
创建 SQL 数据库连接所需的信息,例如 SQL 服务器和数据库名称。 如果使用 Windows 身份验证或 SQL Server 身份验证来验证访问权限,则还需要用户名和密码。 通常可以在连接字符串中找到此信息。
重要
如果使用直接从 Azure 门户复制的 SQL Server 连接字符串,则必须手动将密码添加到连接字符串。 对于敏感信息(比如这个字符串),确保使用最安全的身份验证流程。 Azure 建议尽可能使用托管标识对 Azure 资源访问进行身份验证,并分配具有所需最低特权的角色。
如果此功能不可用,请务必通过其他措施(例如可与标准工作流中的应用设置一起使用的 Azure 密钥保管库)保护连接字符串。 然后,可以直接引用安全字符串,例如连接字符串和密钥。 与 ARM 模板类似,在部署时可以定义环境变量,可以在标准逻辑应用工作流定义中定义应用设置。 然后,可以捕获动态生成的基础结构值,例如连接终结点、存储字符串等。 有关详细信息,请参阅Microsoft 标识平台的应用程序类型。
对于 Azure 中的 SQL 数据库,连接字符串的格式如下:
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;
若要在 Azure 门户中找到此字符串,请打开数据库。
在数据库菜单的“属性”下,选择“连接字符串”。
对于本地 SQL 服务器,连接字符串的格式如下:
Server={your-server-address};Database={your-database-name};User Id={your-user-name};Password={your-password};
在标准工作流中,若要使用 SQL 内置触发器,必须在要使用触发器的表中启用更改跟踪。 有关详细信息,请参阅启用和禁用更改跟踪。
要在其中访问 SQL 数据库的逻辑应用工作流。 如果要使用 SQL Server 触发器启动工作流,则必须从空白工作流开始。 要使用 SQL Server 操作,可使用任何触发器启动工作流。
若要连接到本地 SQL 服务器,根据你是否具有消耗型或标准型逻辑应用工作流,需要满足以下额外要求。
消耗工作流
在多租户 Azure 逻辑应用中,你需要使用安装在本地计算机上的本地数据网关,以及已在 Azure 中创建的数据网关资源。
标准工作流
可以使用 SQL Server 内置连接器或托管连接器。
若要对逻辑应用使用 Microsoft Entra 身份验证或托管标识身份验证,必须设置 SQL Server 才能使用这些身份验证类型。 有关详细信息,请参阅身份验证 - SQL Server 托管连接器参考。
若要使用内置连接器,可以使用托管标识、Microsoft Entra ID 或连接字符串对连接进行身份验证。 可以通过在连接字符串中指定参数来调整连接池。 有关详细信息,请参阅连接池。
要使用 SQL Server 托管连接器,请遵循与多租户 Azure 逻辑应用中的消耗型逻辑应用工作流相同的要求。 有关其他连接器要求,请参阅 SQL Server 托管连接器参考。
添加 SQL Server 触发器
以下步骤使用 Azure 门户,但利用适当的 Azure 逻辑应用扩展,也可以使用以下工具来创建逻辑应用工作流:
消耗型工作流:Visual Studio 或 Visual Studio Code
标准工作流:Visual Studio Code
在 Azure 门户中,打开设计器中的消耗型逻辑应用和空白工作流。
在设计器的搜索框下选择“标准”。 然后,按照这些常规步骤添加所需的 SQL Server 托管触发器。
此示例继续使用名为“当创建项时”的触发器。
在系统提示时提供连接的相关信息。 完成操作后,选择“创建”。
触发器信息框出现后,请为所选触发器提供所需的必要信息。
对于此示例,在名为 When an item is created 的触发器中,提供 SQL Server 名称和数据库名称的值(如果以前未提供)。 否则,请从“表格名称”列表中选择要使用的表格。 选择“频率”和“间隔”,以设置触发器检查新项目的计划。
如果任何其他属性可用于此触发器,请打开“添加新参数”列表,然后选择与方案相关的那些属性。
此触发器仅从选定表返回一个行,不返回其他内容。 若要执行其他任务,请继续添加 SQL Server 连接器操作或其他操作,以便执行逻辑应用工作流中所需的下一个任务。
例如,若要查看此行中的数据,可以添加其他操作(用于创建一个文件,其字段来自返回的行),然后发送电子邮件警报。 若要了解有关此连接器的其他可用操作,请参阅 SQL Server 托管连接器参考。
完成后,保存工作流。 在设计器工具栏上选择“保存”。
保存工作流时,此步骤会自动将更新发布到 Azure 中实时部署的逻辑应用。 如果只使用触发器,工作流将仅根据指定的计划检查 SQL 数据库。 必须添加一项操作来响应触发器。
添加 SQL Server 操作
以下步骤使用 Azure 门户,但利用适当的 Azure 逻辑应用扩展,也可以使用 Visual Studio 编辑消耗型逻辑应用工作流,或使用 Visual Studio Code 编辑逻辑应用工作流,如下所示:
消耗型工作流:Visual Studio 或 Visual Studio Code
标准工作流:Visual Studio Code
在此示例中,逻辑应用工作流一开始使用定期触发器,然后调用一个从 SQL 数据库获取行的操作。
在 Azure 门户中,打开设计器中的消耗型逻辑应用和工作流。
在设计器中,按照这些常规步骤添加所需的 SQL Server 托管操作。
此示例继续使用名为 Get row 的操作(用于获取单个记录)。
在系统提示时提供连接的相关信息。 完成操作后,选择“创建”。
操作信息框出现后,从“表名称”列表中选择要使用的表。 在“行 ID”属性中,输入所需记录的 ID。
在本示例中,表名为 SalesLT.Customer。
此操作仅从选定表返回一个行,不执行其他任务。 若要查看此行中的数据,请添加其他操作。 例如,此类操作可能会创建一个文件,包括返回行中的字段,并将文件存储在云存储帐户中。 若要了解此连接器的其他可用操作,请参阅连接器的参考页。
完成后,保存工作流。 在设计器工具栏上选择“保存”。
连接到数据库
添加连接到服务或系统的触发器或操作时,如果没有现有连接或活动连接,Azure 逻辑应用会提示你提供连接信息,这些信息因连接类型而异,例如:
- 要用于连接的名称
- 帐户凭据
- 服务器或系统名称
- 一个连接字符串
- 要使用的身份验证类型
提供此信息后,请根据目标数据库继续执行以下步骤:
连接到 Azure SQL 数据库或 SQL 托管实例
要在不使用本地数据网关情况下访问 SQL 托管实例,必须在 SQL 托管实例上设置公共终结点。 公共终结点使用端口 3342,因此在从逻辑应用创建连接时,请务必指定此端口号。
在连接信息框中,完成以下步骤:
对于“连接名称”,请为连接提供一个名称。
对于“身份验证类型”,选择所需的并已在 Azure SQL 数据库或 SQL 托管实例中的数据库上启用的身份验证:
身份验证 说明 连接字符串 - 仅在具有 SQL Server 内置连接器的标准型工作流中受支持。
- 需要 SQL Server 和数据库的连接字符串。Active Directory OAuth - 仅在具有 SQL Server 内置连接器的标准型工作流中受支持。 有关详细信息,请参阅以下文档:
- SQL Server 连接器的身份验证
- 使用 Microsoft Entra ID 启用 Open Authorization (Microsoft Entra ID OAuth)
- 使用 Microsoft Entra ID 的 OAuth逻辑应用托管标识 - 仅适用于 SQL Server 托管连接器。 在标准型工作流中,这种身份验证类型可用于 SQL Server 内置连接器,但该选项命名为“托管标识”。
- 需要以下项:
--- 在逻辑应用资源上启用并有权访问数据库的有效托管标识。
--- 可访问 SQL Server 资源的 SQL DB 参与者角色
--- 对包含 SQL Server 资源的资源组的“参与者”访问权限。
有关详细信息,请参阅以下文档:
- 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 托管连接器并选择“Microsoft Entra 集成”身份验证时,连接信息框可能会如何显示:
消耗型工作流
标准型工作流
选择“Microsoft Entra 集成”后,请选择“登录”。 根据你使用的是 Azure SQL 数据库还是 SQL 托管实例,选择用于身份验证的用户凭据。
为你的数据库选择以下值:
属性 必选 说明 服务器名称 是 SQL 服务器的地址,例如 Fabrikam-Azure-SQL.database.chinacloudapi.cn 数据库名称 是 SQL 数据库的名称,例如 Fabrikam-Azure-SQL-DB 表名称 是 要使用的表,例如 SalesLT.Customer 提示
若要提供数据库和表信息,可使用以下选项:
在数据库的连接字符串中找到此信息。 例如,在 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 触发器或添加 SQL 操作中执行你尚未完成的步骤。
连接到本地 SQL Server
在连接信息框中,完成以下步骤:
对于需要本地数据网关的到本地 SQL Server 的连接,请确保已完成这些先决条件。
否则,当你创建连接时,你的数据网关资源不会显示在“连接网关”列表中。
对于“身份验证类型”,请选择所需的且已在 SQL Server 上启用的身份验证:
身份验证 说明 SQL Server 身份验证 - 受 SQL Server 托管连接器和 SQL Server 内置连接器支持。
- 需要以下项:
--- 先前在 Azure 中为连接创建的数据网关资源,无论逻辑应用是否位于多租户 Azure 逻辑应用中。
--- 创建并存储在 SQL Server 中的有效用户名和强密码。
有关详细信息,请参阅 SQL Server 身份验证。Windows 身份验证 - 仅适用于 SQL Server 托管连接器。
- 需要以下项:
--- 先前在 Azure 中为连接创建的数据网关资源,无论逻辑应用是否位于多租户 Azure 逻辑应用中。
--- 一个有效的 Windows 用户名和密码,用于通过 Windows 帐户确认你的身份。
有关详细信息,请参阅 Windows 身份验证。为你的 SQL 数据库选择或提供以下值:
属性 必选 说明 SQL Server 名称 是 你的 SQL Server 的地址,例如 Fabrikam-Azure-SQL.database.chinacloudapi.cn
SQL 数据库名称 是 你的 SQL Server 数据库的名称,例如 Fabrikam-Azure-SQL-DB
用户名 是 你用于 SQL Server 和数据库的用户名 密码 是 你用于 SQL Server 和数据库的密码 订阅 是(对于 Windows 身份验证) 你之前在 Azure 中创建的数据网关资源的 Azure 订阅 连接网关 是(对于 Windows 身份验证) 你之前在 Azure 中创建的数据网关资源的名称
提示:如果网关未出现在列表中,请检查是否已经正确设置网关。提示
可在数据库的连接字符串中找到此信息:
Server={your-server-address}
Database={your-database-name}
User ID={your-user-name}
Password={your-password}
以下示例显示了选择 Windows 身份验证时连接信息框的显示方式。
消耗型工作流
标准型工作流
准备就绪后,选择“创建”。
现在,继续在添加 SQL 触发器或添加 SQL 操作中执行你尚未完成的步骤。
处理批量数据
有时,你处理的结果集非常大,以致于连接器无法同时返回所有结果。 或者,你希望更好地控制结果集的大小和结构。 以下列表包括一些可用于处理此类大型结果集的方法:
为了帮助你将结果作为较小的集进行管理,请启用“分页”。 有关详细信息,请参阅使用分页获取批量数据、记录和项。 有关详细信息,请参阅通过 SQL 分页使用逻辑应用进行批量数据传输。
创建一个按所需方式组织结果的存储过程。 SQL Server 连接器提供了许多可以使用 Azure 逻辑应用访问的后端功能,以便你更轻松地自动执行处理 SQL 数据库表的业务任务。
当 SQL 操作获取或插入多行时,逻辑应用工作流可以在这些限制内使用 until 循环循环访问这些行。 但是,当逻辑应用必须处理非常大的记录(例如,数千或数百万行)时,你希望将调用数据库的成本降到最低。
若要按所需方式组织结果,可以创建在 SQL 实例中运行并使用 SELECT - ORDER BY 语句的存储过程。 此解决方案可以更好地控制结果的大小和结构。 逻辑应用可以使用 SQL Server 连接器的“执行存储过程”操作调用存储过程。 有关详细信息,请参阅 SELECT - ORDER BY 子句。
注意
SQL Server 连接器的存储过程超时限制是小于 2 分钟。 某些存储过程可能需要超过此限制才能完成,从而导致
504 Timeout
错误。 可使用 SQL 完成触发器、本机 SQL 传递查询、状态表和服务器端作业来解决此问题。对于此任务,可使用适用于 Azure SQL 数据库的 Azure 弹性作业代理。 对于本地 SQL Server 和 SQL 托管实例,可使用 SQL Server 代理。 有关详细信息,请参阅处理适用于 Azure 逻辑应用的 SQL Server 连接器中的长期存储过程超时。
处理动态批量数据
当使用 SQL Server 连接器调用存储过程时,返回的输出有时候是动态的。 在这种情况下,请执行以下步骤:
在 Azure 门户的设计器中打开逻辑应用和工作流。
通过执行测试运行来查看输出格式。 复制并保存示例输出。
在设计器中,在调用存储过程的操作下,添加名为 Parse JSON 内置操作。
在“分析 JSON”操作中,选择“使用示例有效负载生成架构” 。
在“输入或粘贴示例 JSON 有效负载”框中,粘贴示例输出,然后选择“完成”。
注意
如果出现 Azure 逻辑应用无法生成架构的错误,请检查是否正确设置了示例输出的语法格式。 如果仍无法生成架构,请在“架构”框中手动输入架构。
完成后,保存工作流。
若要引用 JSON 内容属性,请在要在其中引用这些属性的编辑框中进行选择,以便显示动态内容列表。 在列表中的分析 JSON 标题下,为你所需的 JSON 内容属性选择数据令牌。