你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

注意

适用于 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 扩展发布页上查看预览功能。

注意

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

示例

除了 Azure SQL 绑定 GitHub 存储库中提供的 C#、Java、JavaScript、PowerShell 和 Python 示例外,“Azure 示例”中还提供了其他示例:

后续步骤