Azure SQL bindings for Azure Functions overview
This set of articles explains how to work with Azure SQL bindings in Azure Functions. Azure Functions supports input bindings, output bindings, and a function trigger for the Azure SQL and SQL Server products.
Action | Type |
---|---|
Trigger a function when a change is detected on a SQL table | SQL trigger |
Read data from a database | Input binding |
Save data to a database | Output binding |
Install extension
The extension NuGet package you install depends on the C# mode you're using in your function app:
Functions execute in an isolated C# worker process. To learn more, see Guide for running C# Azure Functions in an isolated worker process.
Add the extension to your project by installing this NuGet package.
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql
To use a preview version of the Microsoft.Azure.Functions.Worker.Extensions.Sql package, add the --prerelease
flag to the command. You can view preview functionality on the Azure Functions SQL Extensions release page.
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql --prerelease
Note
Breaking changes between preview releases of the Azure SQL bindings for Azure Functions requires that all Functions targeting the same database use the same version of the SQL extension package.
Install bundle
The SQL bindings extension is part of the v4 extension bundle, which is specified in your host.json project file.
The extension bundle is specified by the following code in your host.json
file:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Functions runtime
Install bundle
The SQL bindings extension is part of the v4 extension bundle, which is specified in your host.json project file.
The extension bundle is specified by the following code in your host.json
file:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Install bundle
The SQL bindings extension is part of the v4 extension bundle, which is specified in your host.json project file.
The extension bundle is specified by the following code in your host.json
file:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Update packages
Add the Java library for SQL bindings to your functions project with an update to the pom.xml
file in your Java Azure Functions project as seen in the following snippet:
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-sql</artifactId>
<version>2.1.0</version>
</dependency>
You can use the preview extension bundle with an update to the pom.xml
file in your Java Azure Functions project as seen in the following snippet:
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-sql</artifactId>
<version>2.1.0-preview</version>
</dependency>
SQL connection string
Important
It is strongly recommended that managed identities are used for accessing an Azure SQL Database with Azure Functions. Managed identities make your app more secure by eliminating secrets from your application deployments, such as credentials in the connection strings, server names, and ports being used. You can learn how to use managed identities in this tutorial, Connect a function app to Azure SQL with managed identity and SQL bindings.
Azure SQL bindings for Azure Functions have a required property for the connection string on all bindings and triggers. These pass the connection string to the Microsoft.Data.SqlClient library and supports the connection string as defined in the SqlClient ConnectionString documentation. Notable keywords include:
Authentication
allows a function to connect to Azure SQL with Microsoft Entra ID, including Active Directory Managed IdentityCommand Timeout
allows a function to wait for specified amount of time in seconds before terminating a query (default 30 seconds)ConnectRetryCount
allows a function to automatically make additional reconnection attempts, especially applicable to Azure SQL Database serverless tier (default 1)Pooling
allows a function to reuse connections to the database, which can improve performance (defaulttrue
). Additional settings for connection pooling includeConnection Lifetime
,Max Pool Size
, andMin Pool Size
. Learn more about connection pooling in the ADO.NET documentation
Considerations
- Azure SQL binding supports version 4.x and later of the Functions runtime.
- Source code for the Azure SQL bindings can be found in this GitHub repository.
- This binding requires connectivity to an Azure SQL or SQL Server database.
- Output bindings against tables with columns of data types
NTEXT
,TEXT
, orIMAGE
aren't supported and data upserts will fail. These types will be removed in a future version of SQL Server and aren't compatible with theOPENJSON
function used by this Azure Functions binding. - Use managed identities instead of usernames and passwords.
- Concider using an Azure Key Value to store application settings.
Samples
In addition to the samples for C#, Java, JavaScript, PowerShell, and Python available in the Azure SQL bindings GitHub repository, more are available in Azure Samples:
- C# ToDo API sample with Azure SQL bindings
- Use SQL bindings in Azure Stream Analytics
- Send data from Azure SQL with Python