适用于 Azure Functions 的 Azure SQL 绑定概述
这组文章介绍如何在 Azure Functions 中使用 azure SQL 绑定。 Azure Functions 支持 Azure SQL 和 SQL Server 产品的输入绑定、输出绑定和函数触发器。
安装的扩展 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 扩展包版本。
SQL 绑定扩展是 v4 扩展捆绑包的一部分,在 host.json 项目文件中指定。
扩展捆绑包由 host.json
文件中的以下代码指定:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
SQL 绑定扩展是 v4 扩展捆绑包的一部分,在 host.json 项目文件中指定。
扩展捆绑包由 host.json
文件中的以下代码指定:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
SQL 绑定扩展是 v4 扩展捆绑包的一部分,在 host.json 项目文件中指定。
扩展捆绑包由 host.json
文件中的以下代码指定:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
使用对 Java Azure Functions 项目中 pom.xml
文件的更新,将用于 SQL 绑定的 Java 库添加到函数项目中,如以下代码片段所示:
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-sql</artifactId>
<version>2.1.0</version>
</dependency>
可以将预览扩展捆绑包与 Java Azure Functions 项目中 pom.xml
文件的更新一起使用,如以下代码片段所示:
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-sql</artifactId>
<version>2.1.0-preview</version>
</dependency>
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 Lifetime
、Max Pool Size
和Min Pool Size
。 在 ADO.NET 文档中详细了解连接池
- Azure SQL 绑定支持 Functions 运行时版本 4.x 及更高版本。
- 可在此 GitHub 存储库 找到 Azure SQL 绑定的源代码。
- 此绑定需要连接到 Azure SQL 或 SQL Server 数据库。
- 不支持针对数据类型为
NTEXT
、TEXT
或IMAGE
列的表的输出绑定,并且数据更新插入将失败。 这些类型 将在 SQL Server 的未来版本中 删除,并且与此 Azure Functions 绑定使用的OPENJSON
函数不兼容。 - 使用 托管标识 而不是用户名和密码。
- 请考虑使用 Azure 密钥值 来存储应用程序设置。
除了 Azure SQL 绑定 GitHub 存储库中提供的 C#、Java、JavaScript、PowerShell 和 Python 示例,Azure 示例中还提供更多示例:
- 使用 Azure SQL 绑定 C# ToDo API 示例
- 在 Azure 流分析 中使用 SQL 绑定
- 使用 Python 从 Azure SQL 发送数据