Vinculação de saída SQL do Azure para o Funções do Azure

A associação de saída SQL do Azure permite gravar em um banco de dados.

Para obter informações sobre detalhes de instalação e configuração, consulte a visão geral.

Importante

Este artigo usa guias para oferecer suporte a várias versões do modelo de programação Node.js. O modelo v4 está geralmente disponível e foi projetado para ter uma experiência mais flexível e intuitiva para desenvolvedores JavaScript e TypeScript. Para obter mais detalhes sobre como o modelo v4 funciona, consulte o Guia do desenvolvedor do Funções do Azure Node.js. Para saber mais sobre as diferenças entre v3 e v4, consulte o guia de migração.

Para um exemplo completo de ponta a ponta de utilização da ligação de saída SQL do Azure, veja Responder a alterações Base de Dados SQL do Azure usando Funções do Azure.

Exemplos

O suporte Go não está atualmente disponível para esta ligação.

Você pode criar uma função C# usando um dos seguintes modos C#:

  • Modelo de trabalho isolado: função C# compilada que é executada em um processo de trabalho isolado do tempo de execução. Um processo de trabalho isolado é necessário para dar suporte a funções C# executadas em versões LTS (long-term support) e não-LTS para .NET e .NET Framework.
  • Modelo em processo: função C# compilada que é executada no mesmo processo que o tempo de execução do Funções do Azure.
  • Script C#: usado principalmente quando você cria funções C# no portal do Azure.

Importante

O suporte para o modelo em processo terminará em 10 de novembro de 2026. É altamente recomendável que você migre seus aplicativos para o modelo de trabalho isolado para obter suporte total.

Mais exemplos para a associação de saída SQL do Azure estão disponíveis no repositório GitHub.

Esta seção contém os seguintes exemplos:

Os exemplos referem-se a uma ToDoItem classe e a uma tabela de banco de dados correspondente:

namespace AzureSQL.ToDo
{
    public class ToDoItem
    {
        public Guid Id { get; set; }
        public int? order { get; set; }
        public string title { get; set; }
        public string url { get; set; }
        public bool? completed { get; set; }
    }
}
CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

Para retornar várias ligações de saída em nossos exemplos, criamos um tipo de retorno personalizado:

public static class OutputType
{
    [SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
    public static ToDoItem ToDoItem { get; set; }
    public static HttpResponseData HttpResponse { get; set; }
}

Gatilho HTTP, gravar um registro

O exemplo a seguir mostra uma função C# que adiciona um registro a um banco de dados, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON. O objeto return é a OutputType classe que criamos para lidar com uma resposta HTTP e a ligação de saída SQL.

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace AzureSQL.ToDo
{
    public static class PostToDo
    {
        // create a new ToDoItem from body object
        // uses output binding to insert new item into ToDo table
        [FunctionName("PostToDo")]
        public static async Task<OutputType> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "PostFunction")] HttpRequestData req,
                FunctionContext executionContext)
        {
            var logger = executionContext.GetLogger("PostToDo");
            logger.LogInformation("C# HTTP trigger function processed a request.");

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            ToDoItem toDoItem = JsonConvert.DeserializeObject<ToDoItem>(requestBody);

            // generate a new id for the todo item
            toDoItem.Id = Guid.NewGuid();

            // set Url from env variable ToDoUri
            toDoItem.url = Environment.GetEnvironmentVariable("ToDoUri")+"?id="+toDoItem.Id.ToString();

            // if completed is not provided, default to false
            if (toDoItem.completed == null)
            {
                toDoItem.completed = false;
            }

            return new OutputType()
            {
                ToDoItem = toDoItem,
                HttpResponse = req.CreateResponse(System.Net.HttpStatusCode.Created)
            }
        }
    }

    public static class OutputType
    {
        [SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
        public ToDoItem ToDoItem { get; set; }

        public HttpResponseData HttpResponse { get; set; }
    }
}

Gatilho HTTP, gravar em duas tabelas

O exemplo a seguir mostra uma função C# que adiciona registros a um banco de dados em duas tabelas diferentes (dbo.ToDo e dbo.RequestLog), usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON e várias ligações de saída.

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

Para usar uma ligação de saída extra, adicionamos uma classe para RequestLog e modificamos nossa OutputType classe:

using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace AzureSQL.ToDo
{
    public static class PostToDo
    {
        // create a new ToDoItem from body object
        // uses output binding to insert new item into ToDo table
        [FunctionName("PostToDo")]
        public static async Task<OutputType> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "PostFunction")] HttpRequestData req,
                FunctionContext executionContext)
        {
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            ToDoItem toDoItem = JsonConvert.DeserializeObject<ToDoItem>(requestBody);

            // generate a new id for the todo item
            toDoItem.Id = Guid.NewGuid();

            // set Url from env variable ToDoUri
            toDoItem.url = Environment.GetEnvironmentVariable("ToDoUri")+"?id="+toDoItem.Id.ToString();

            // if completed is not provided, default to false
            if (toDoItem.completed == null)
            {
                toDoItem.completed = false;
            }

            requestLog = new RequestLog();
            requestLog.RequestTimeStamp = DateTime.Now;
            requestLog.ItemCount = 1;

            return new OutputType()
            {
                ToDoItem = toDoItem,
                RequestLog = requestLog,
                HttpResponse = req.CreateResponse(System.Net.HttpStatusCode.Created)
            }
        }
    }

    public class RequestLog {
        public DateTime RequestTimeStamp { get; set; }
        public int ItemCount { get; set; }
    }

    public static class OutputType
    {
        [SqlOutput("dbo.ToDo", connectionStringSetting: "SqlConnectionString")]
        public ToDoItem ToDoItem { get; set; }

        [SqlOutput("dbo.RequestLog", connectionStringSetting: "SqlConnectionString")]
        public RequestLog RequestLog { get; set; }

        public HttpResponseData HttpResponse { get; set; }
    }

}

Mais exemplos para a associação de saída SQL do Azure estão disponíveis no repositório GitHub.

Esta seção contém os seguintes exemplos:

Os exemplos referem-se a uma ToDoItem classe (em um arquivo ToDoItem.javaseparado) e a uma tabela de banco de dados correspondente:

package com.function;
import java.util.UUID;

public class ToDoItem {
    public UUID Id;
    public int order;
    public String title;
    public String url;
    public boolean completed;

    public ToDoItem() {
    }

    public ToDoItem(UUID Id, int order, String title, String url, boolean completed) {
        this.Id = Id;
        this.order = order;
        this.title = title;
        this.url = url;
        this.completed = completed;
    }
}
CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

Gatilho HTTP, gravar um registro em uma tabela

O exemplo a seguir mostra uma ligação de saída SQL em uma função Java que adiciona um registro a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON. A função usa outra dependência da biblioteca com.google.code.gson para analisar o corpo JSON.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
package com.function;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.sql.annotation.SQLOutput;
import com.google.gson.Gson;

import java.util.Optional;

public class PostToDo {
    @FunctionName("PostToDo")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            @SQLOutput(
                name = "toDoItem",
                commandText = "dbo.ToDo",
                connectionStringSetting = "SqlConnectionString")
                OutputBinding<ToDoItem> output) {
        String json = request.getBody().get();
        Gson gson = new Gson();
        ToDoItem newToDo = gson.fromJson(json, ToDoItem.class);

        newToDo.Id = UUID.randomUUID();
        output.setValue(newToDo);

        return request.createResponseBuilder(HttpStatus.CREATED).header("Content-Type", "application/json").body(output).build();
    }
}

Gatilho HTTP, gravar em duas tabelas

O exemplo a seguir mostra uma ligação de saída SQL em uma função JavaS que adiciona registros a um banco de dados em duas tabelas diferentes (dbo.ToDo e dbo.RequestLog), usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON e várias ligações de saída. A função usa outra dependência da biblioteca com.google.code.gson para analisar o corpo JSON.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

O segundo quadro, dbo.RequestLog, corresponde à seguinte definição:

CREATE TABLE dbo.RequestLog (
    Id INT IDENTITY(1,1) PRIMARY KEY,
    RequestTimeStamp DATETIME2 NOT NULL DEFAULT(GETDATE()),
    ItemCount INT NOT NULL
)

e classe Java em RequestLog.java:

package com.function;

import java.util.Date;

public class RequestLog {
    public int Id;
    public Date RequestTimeStamp;
    public int ItemCount;

    public RequestLog() {
    }

    public RequestLog(int Id, Date RequestTimeStamp, int ItemCount) {
        this.Id = Id;
        this.RequestTimeStamp = RequestTimeStamp;
        this.ItemCount = ItemCount;
    }
}
package com.function;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
import com.microsoft.azure.functions.sql.annotation.SQLOutput;
import com.google.gson.Gson;

import java.util.Optional;

public class PostToDoWithLog {
    @FunctionName("PostToDoWithLog")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            @SQLOutput(
                name = "toDoItem",
                commandText = "dbo.ToDo",
                connectionStringSetting = "SqlConnectionString")
                OutputBinding<ToDoItem> output,
            @SQLOutput(
                name = "requestLog",
                commandText = "dbo.RequestLog",
                connectionStringSetting = "SqlConnectionString")
                OutputBinding<RequestLog> outputLog,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");

        String json = request.getBody().get();
        Gson gson = new Gson();
        ToDoItem newToDo = gson.fromJson(json, ToDoItem.class);
        newToDo.Id = UUID.randomUUID();
        output.setValue(newToDo);

        RequestLog newLog = new RequestLog();
        newLog.ItemCount = 1;
        outputLog.setValue(newLog);

        return request.createResponseBuilder(HttpStatus.CREATED).header("Content-Type", "application/json").body(output).build();
    }
}

Mais exemplos para a associação de saída SQL do Azure estão disponíveis no repositório GitHub.

Esta seção contém os seguintes exemplos:

Os exemplos referem-se a uma tabela de banco de dados:

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

Gatilho HTTP, gravar registros em uma tabela

O exemplo a seguir mostra uma associação de saída SQL que adiciona registros a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.

Gatilho HTTP, gravar em duas tabelas

O exemplo a seguir mostra uma associação de saída SQL que adiciona registros a um banco de dados em duas tabelas diferentes (dbo.ToDo e dbo.RequestLog), usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON e várias ligações de saída.

O segundo quadro, dbo.RequestLog, corresponde à seguinte definição:

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

Mais exemplos para a associação de saída SQL do Azure estão disponíveis no repositório GitHub.

Esta seção contém os seguintes exemplos:

Os exemplos referem-se a uma tabela de banco de dados:

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

Gatilho HTTP, gravar registros em uma tabela

O exemplo a seguir mostra uma ligação de saída SQL em um arquivo function.json e uma função do PowerShell que adiciona registros a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.

O seguinte é a vinculação de dados no arquivo function.json:

{
    "authLevel": "anonymous",
    "type": "httpTrigger",
    "direction": "in",
    "name": "req",
    "methods": [
        "post"
    ]
},
{
    "type": "http",
    "direction": "out",
    "name": "res"
},
{
    "name": "todoItems",
    "type": "sql",
    "direction": "out",
    "commandText": "dbo.ToDo",
    "connectionStringSetting": "SqlConnectionString"
}

A seção de configuração explica essas propriedades.

A seguir está um exemplo de código do PowerShell para a função no run.ps1 arquivo:


```powershell
using namespace System.Net

param($Request)

Write-Host "PowerShell function with SQL Output Binding processed a request."

# Update req_body with the body of the request
$req_body = $Request.Body

# Assign the value we want to pass to the SQL Output binding. 
# The -Name value corresponds to the name property in the function.json for the binding
Push-OutputBinding -Name todoItems -Value $req_body

Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $req_body
})

Gatilho HTTP, gravar em duas tabelas

O exemplo a seguir mostra uma associação de saída SQL em um arquivo function.json e uma função do PowerShell que adiciona registros a um banco de dados em duas tabelas diferentes (dbo.ToDo e dbo.RequestLog), usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON e várias ligações de saída.

O segundo quadro, dbo.RequestLog, corresponde à seguinte definição:

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

O seguinte é a vinculação de dados no arquivo function.json:

{
    "authLevel": "anonymous",
    "type": "httpTrigger",
    "direction": "in",
    "name": "req",
    "methods": [
        "post"
    ]
},
{
    "type": "http",
    "direction": "out",
    "name": "res"
},
{
    "name": "todoItems",
    "type": "sql",
    "direction": "out",
    "commandText": "dbo.ToDo",
    "connectionStringSetting": "SqlConnectionString"
},
{
    "name": "requestLog",
    "type": "sql",
    "direction": "out",
    "commandText": "dbo.RequestLog",
    "connectionStringSetting": "SqlConnectionString"
}

A seção de configuração explica essas propriedades.

A seguir está um exemplo de código do PowerShell para a função no run.ps1 arquivo:

using namespace System.Net

param($Request)

Write-Host "PowerShell function with SQL Output Binding processed a request."

# Update req_body with the body of the request
$req_body = $Request.Body
$new_log = @{
    RequestTimeStamp = [DateTime]::Now
    ItemCount = 1
}

Push-OutputBinding -Name todoItems -Value $req_body
Push-OutputBinding -Name requestLog -Value $new_log

Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $req_body
})

Mais exemplos para a associação de saída SQL do Azure estão disponíveis no repositório GitHub.

Esta seção contém os seguintes exemplos:

Os exemplos referem-se a uma tabela de banco de dados:

CREATE TABLE dbo.ToDo (
    [Id] UNIQUEIDENTIFIER PRIMARY KEY,
    [order] INT NULL,
    [title] NVARCHAR(200) NOT NULL,
    [url] NVARCHAR(200) NOT NULL,
    [completed] BIT NOT NULL
);

Gatilho HTTP, gravar registros em uma tabela

O exemplo a seguir mostra uma ligação de saída SQL em um arquivo function.json e uma função Python que adiciona registros a uma tabela, usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON.

A seguir está o código python de exemplo para o arquivo function_app.py:

import json
import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="AddToDo")
@app.route(route="addtodo")
@app.sql_output(arg_name="todo",
                        command_text="[dbo].[ToDo]",
                        connection_string_setting="SqlConnectionString")
def add_todo(req: func.HttpRequest, todo: func.Out[func.SqlRow]) -> func.HttpResponse:
    body = json.loads(req.get_body())
    row = func.SqlRow.from_dict(body)
    todo.set(row)

    return func.HttpResponse(
        body=req.get_body(),
        status_code=201,
        mimetype="application/json"
    )

Gatilho HTTP, gravar em duas tabelas

O exemplo a seguir mostra uma ligação de saída SQL em um arquivo function.json e uma função Python que adiciona registros a um banco de dados em duas tabelas diferentes (dbo.ToDo e dbo.RequestLog), usando dados fornecidos em uma solicitação HTTP POST como um corpo JSON e várias ligações de saída.

O segundo quadro, dbo.RequestLog, corresponde à seguinte definição:

CREATE TABLE dbo.RequestLog (
    Id int identity(1,1) primary key,
    RequestTimeStamp datetime2 not null,
    ItemCount int not null
)

A seguir está o código python de exemplo para o arquivo function_app.py:

from datetime import datetime
import json
import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="PostToDo")
@app.route(route="posttodo")
@app.sql_output(arg_name="todoItems",
                        command_text="[dbo].[ToDo]",
                        connection_string_setting="SqlConnectionString")
@app.sql_output(arg_name="requestLog",
                        command_text="[dbo].[RequestLog]",
                        connection_string_setting="SqlConnectionString")
def add_todo(req: func.HttpRequest, todoItems: func.Out[func.SqlRow], requestLog: func.Out[func.SqlRow]) -> func.HttpResponse:
    logging.info('Python HTTP trigger and SQL output binding function processed a request.')
    try:
        req_body = req.get_json()
        rows = func.SqlRowList(map(lambda r: func.SqlRow.from_dict(r), req_body))
    except ValueError:
        pass

    requestLog.set(func.SqlRow({
        "RequestTimeStamp": datetime.now().isoformat(),
        "ItemCount": 1
    }))

    if req_body:
        todoItems.set(rows)
        return func.HttpResponse(
            "OK",
            status_code=201,
            mimetype="application/json"
        )
    else:
        return func.HttpResponse(
            "Error accessing request body",
            status_code=400
        )

Atributos

A biblioteca C# usa o atributo SqlAttribute para declarar as associações SQL na função, que tem as seguintes propriedades:

Propriedade Attribute Descrição
CommandText Obrigatório. O nome da tabela que está sendo escrita pela ligação.
ConnectionStringSetting Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados estão sendo gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente.

Anotações

Na biblioteca de tempo de execução de funções Java, use a @SQLOutput anotação (com.microsoft.azure.functions.sql.annotation.SQLOutput) em parâmetros cujo valor viria do SQL do Azure. Esta anotação suporta os seguintes elementos:

Elemento Descrição
commandText Obrigatório. O nome da tabela que está sendo escrita pela ligação.
connectionStringSetting Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados estão sendo gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente.
Designação Obrigatório. O nome exclusivo da ligação de função.

Configuração

A tabela a seguir explica as propriedades que você pode definir no options objeto passado para o output.sql() método.

Propriedade Descrição
commandText Obrigatório. O nome da tabela que está sendo escrita pela ligação.
connectionStringSetting Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados estão sendo gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente. Palavras-chave opcionais no valor da cadeia de conexão estão disponíveis para refinar a conectividade de associações SQL.

Configuração

A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json .

function.json propriedade Descrição
tipo Obrigatório. Deve ser definido como sql.
direção Obrigatório. Deve ser definido como out.
Designação Obrigatório. O nome da variável que representa a entidade no código da função.
commandText Obrigatório. O nome da tabela que está sendo escrita pela ligação.
connectionStringSetting Obrigatório. O nome de uma configuração de aplicativo que contém a cadeia de conexão para o banco de dados no qual os dados estão sendo gravados. Esse valor não é a cadeia de conexão real e, em vez disso, deve ser resolvido para uma variável de ambiente. Palavras-chave opcionais no valor da cadeia de conexão estão disponíveis para refinar a conectividade de associações SQL.

Quando estiver desenvolvendo localmente, adicione as configurações do aplicativo no arquivo local.settings.json na Values coleção.

Utilização

A CommandText propriedade é o nome da tabela onde os dados devem ser armazenados.

As ligações de saída usam a instrução T-SQL MERGE que requer permissões SELECT no banco de dados de destino.

Se ocorrer uma exceção quando uma associação de saída SQL for executada, o código da função para de ser executado. Esse comportamento pode resultar em um código de erro sendo retornado, como um gatilho HTTP retornando um código de erro 500. Se o IAsyncCollector é usado em uma função .NET, então o código da função pode lidar com exceções lançadas pela chamada para FlushAsync().

Connections

A connectionStringSetting propriedade é definida como uma chave nas definições da aplicação que devolve um valor usado pelo runtime Functions para se ligar à base de dados SQL do Azure ou SQL Server usada pela extensão. O valor da definição de propriedade de ligação depende do tipo de ligação:

  • Ligação de identidade gerida: A connectionStringSetting propriedade devolve uma cadeia de ligação que é usada Authentication=Active Directory Managed Identity para autenticar sem segredos. Você pode usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário. Para mais informações, consulte Ligar uma aplicação de função ao SQL do Azure com identidade gerida e Definir conexões de identidade.
  • Referência Key Vault: A connectionStringSetting definição de propriedade devolve uma referência Azure Key Vault ao local onde a cadeia de ligação é mantida centralmente. Para mais informações, consulte Definir ligações ao Key Vault.
  • Referência de App Configuration: A connectionStringSetting definição de propriedade devolve uma referência Azure App Configuration que devolve uma cadeia de ligação ou uma referência ao Key Vault. Para mais informações, consulte Azure App Configuration no artigo de ligações.
  • Connection string: A connectionStringSetting definição de propriedade devolve a cadeia de ligação SQL real. Como a cadeia de ligação pode conter credenciais, deve usar uma ligação de identidade gerida ou pelo menos armazenar a cadeia de ligação no Key Vault. Para mais informações, veja Definir ligações.

Para saber mais sobre ligações de bindings, consulte Gerir ligações no Funções do Azure.

A cadeia de ligação é passada para a Microsoft. Data.SqlClient e suporta todas as palavras-chave definidas na documentação do SqlClient ConnectionString. Palavras-chave notáveis incluem:

  • Authentication: Liga-se ao SQL do Azure com o Microsoft Entra ID. Definir para Active Directory Managed Identity identidades geridas. Para mais informações, consulte Ligar uma aplicação de funções ao SQL do Azure com identidade gerida.
  • Command Timeout: Esperar um tempo especificado em segundos antes de terminar uma consulta (por defeito 30 segundos).
  • ConnectRetryCount: Fazer automaticamente tentativas adicionais de reconexão, especialmente aplicável ao nível serverless do Base de Dados SQL do Azure (padrão 1).
  • Pooling: Reutilizar ligações à base de dados para melhorar o desempenho (por defeito true). As configurações adicionais para pool de conexões incluem Connection Lifetime, Max Pool Sizee Min Pool Size. Saiba mais na documentação do ADO.NET.

Próximos passos