Compartir a través de

适用于 Azure Functions 的 Azure SQL 绑定概述

这组文章介绍如何在 Azure Functions 中使用 azure SQL 绑定。 Azure Functions 支持 Azure SQL 和 SQL Server 产品的输入绑定、输出绑定和函数触发器。

行动 类型
在 SQL 表上检测到更改时触发函数 SQL 触发器
从数据库读取数据 输入绑定
将数据保存到数据库 输出绑定

安装扩展

安装的扩展 NuGet 包取决于在函数应用中使用的 C# 模式:

函数在隔离的 C# 工作进程中执行。 若要了解详细信息,请参阅 指南,了解如何在隔离的工作进程中运行 C# Azure Functions

通过安装此 NuGet 包将扩展添加到项目。

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql

若要使用 Microsoft.Azure.Functions.Worker.Extensions.Sql 包的预览版,请将 --prerelease 标志添加到命令。 可以在 Azure Functions SQL 扩展发布页上查看预览功能。

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql --prerelease

注意

Azure Functions 的 Azure SQL 绑定预览版之间的中断性变更要求面向同一数据库的所有 Functions 都使用相同的 SQL 扩展包版本。

安装捆绑包

若要能够在应用中使用此绑定扩展,请确保项目的根目录中 host.json 文件包含以下 extensionBundle 引用:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

在此示例中,version[4.0.0, 5.0.0)值指示 Functions 主机使用至少4.0.0小于但小于5.0.0的捆绑包版本,其中包括所有可能的 4.x 版本。 此表示法有效地在 v4.x 扩展捆绑包的最新可用次要版本上维护应用。

如果可能,应使用最新的扩展捆绑包主版本,并允许运行时自动维护最新的次要版本。 可以在 扩展捆绑包发布页上查看最新捆绑包的内容。

如果应用要求使用以前的扩展版本,则可能需要改为指定以前的捆绑包版本。 可以查看 捆绑包版本 ,找到包含此扩展版本的捆绑包,该版本可供应用使用。 有关详细信息,请参阅 Azure Functions 扩展捆绑包。 结束区域

如果你的应用需要使用预览功能,则应改为引用最新版本的预览捆绑包。 有关详细信息,请参阅 预览扩展捆绑包

可以在 Azure Functions SQL 扩展发布页上查看预览功能。

注意

Azure Functions 的 Azure SQL 绑定预览版之间的中断性变更要求面向同一数据库的所有 Functions 都使用相同的 SQL 扩展包版本。

更新包

Azure Functions Java SQL 类型包 添加到函数项目中,并更新 pom.xml 项目中的文件,如以下示例所示:

<dependency>
    <groupId>com.microsoft.azure.functions</groupId>
    <artifactId>azure-functions-java-library-sql</artifactId>
    <version>2.1.0</version>
</dependency>

SQL 连接字符串

Azure Functions 的 Azure SQL 绑定在所有绑定和触发器上都有连接字符串的必需属性。 这些字符串将连接字符串传递给 Microsoft.Data.SqlClient 库,并支持 SqlClient ConnectionString 文档中定义的连接字符串

重要

为了获得最佳安全性,应将 Microsoft Entra ID 与托管标识一起使用,以便在 Functions 和 Azure SQL 数据库之间建立连接。 托管标识通过消除应用程序部署中的机密(例如连接字符串、服务器名称和端口中的凭据)使应用更安全。 可以在本教程中了解如何使用托管标识,使用托管标识和 SQL 绑定将函数应用连接到 Azure SQL

值得注意的关键字包括:

  • Authentication:允许函数使用 Microsoft Entra ID 和托管标识连接到 Azure SQL。 有关详细信息,请参阅 使用托管标识和 SQL 绑定将函数应用连接到 Azure SQL
  • Command timeout:允许函数等待指定的时间量(以秒为单位),然后终止查询(默认为 30 秒)
  • ConnectRetryCount:允许函数自动进行额外的重新连接尝试,尤其适用于 Azure SQL 无服务器层(默认 1)
  • Pooling:允许函数重用与数据库的连接,从而提高性能(默认 true)。 连接池的其他设置包括 Connection LifetimeMax Pool SizeMin Pool Size。 在 ADO.NET 文档中详细了解连接池

考虑

  • Azure SQL 绑定支持 Functions 运行时版本 4.x 及更高版本。
  • 可在此 GitHub 存储库 找到 Azure SQL 绑定的源代码。
  • 此绑定需要连接到 Azure SQL 或 SQL Server 数据库。
  • 不支持针对数据类型为 NTEXTTEXTIMAGE 列的表的输出绑定,并且数据更新插入将失败。 这些类型 将在 SQL Server 的未来版本中 删除,并且与此 Azure Functions 绑定使用的 OPENJSON 函数不兼容。
  • 使用 托管标识 而不是用户名和密码。
  • 请考虑使用 Azure 密钥值 来存储应用程序设置。

样品

除了 Azure SQL 绑定 GitHub 存储库中提供的 C#、Java、JavaScript、PowerShell 和 Python 示例,Azure 示例中还提供更多示例:

后续步骤