这组文章介绍如何在 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>
连接
connectionStringSetting该属性在应用设置中被设置为键,返回函数运行时用于连接扩展所用 Azure SQL 或 SQL Server 数据库的值。 连接属性设置的值取决于连接类型:
-
管理身份连接:该
connectionStringSetting属性返回一个连接字符串,用于Authentication=Active Directory Managed Identity无秘密认证。 可以使用系统分配的或用户分配的托管标识。 欲了解更多信息,请参见“将函数应用连接到带有管理身份的 Azure SQL 和定义身份连接”。 -
密钥保管库 引用:
connectionStringSetting属性设置返回一个 Azure 密钥保管库 引用,指向该 连接字符串 中心维护的位置。 更多信息请参见定义 密钥保管库 连接。 -
App Configuration 引用:
connectionStringSetting属性设置返回一个 Azure 应用程序配置 引用,返回一个 连接字符串 或 密钥保管库 引用。 更多信息请参见连接文章中的 Azure 应用程序配置。 -
Connection string:属性设置返回
connectionStringSetting实际的 SQL 连接字符串。 由于 连接字符串 可能包含凭证,你应该使用托管身份连接,或者至少将 连接字符串 存储在 密钥保管库 中。 更多信息请参见定义连接。
想了解更多关于绑定连接的信息,请参见 Azure Functions 中的连接管理。
连接字符串 会传递给 Microsoft。Data.SqlClient,并支持SqlClient ConnectionString文档中定义的所有关键词。 值得注意的关键字包括:
-
Authentication: Connect to Azure SQL with Microsoft Entra ID. 设置为Active Directory Managed Identity托管身份。 欲了解更多信息,请参见“连接函数应用到带有管理身份的Azure SQL”。 -
Command Timeout:在终止查询前等待指定时间(秒数)(默认30秒)。 -
ConnectRetryCount: 自动进行额外的重新连接尝试,尤其适用于 Azure SQL 数据库 无服务器层(默认 1)。 -
Pooling: 重用与数据库的连接以提升性能(默认true)。 连接池的其他设置包括Connection Lifetime、Max Pool Size和Min Pool Size。
考虑
- 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 示例中还提供更多示例: