Usar o Azure Functions para conectar a um banco de dados SQL do Azure
Este artigo mostra como usar o Azure Functions para criar um trabalho agendado que se conecta a uma instância do Banco de Dados SQL do Azure ou da Instância Gerenciada de SQL do Azure. O código de função limpa as linhas em uma tabela no banco de dados. A nova função C# é criada com base em um modelo de gatilho de temporizador predefinido no Visual Studio 2019. Para dar suporte a esse cenário, você também precisa definir uma cadeia de conexão de banco de dados como uma configuração de aplicativo no aplicativo de funções. Na Instância Gerenciada de SQL do Azure, você precisa habilitar o ponto de extremidade público para poder se conectar a partir do Azure Functions. Esse cenário usa uma operação em massa no banco de dados.
Se esta for sua primeira experiência trabalhando com funções C#, você deverá ler a Referência do desenvolvedor de C# do Azure Functions.
Pré-requisitos
Conclua as etapas no artigo Criar sua primeira função usando o Visual Studio para criar um aplicativo de funções local destinado ao runtime versão 2.x ou superior. Você também precisa ter publicado seu projeto em um aplicativo de funções no Azure.
Este artigo demonstra um comando Transact-SQL que executa uma operação de limpeza em massa na tabela SalesOrderHeader no banco de dados de amostra AdventureWorksLT. Para criar o banco de dados de amostra AdventureWorksLT, conclua as etapas no artigo Criar um banco de dados no Banco de Dados SQL do Azure usando o portal do Azure.
Você precisa adicionar uma regra de firewall no nível do servidor para o endereço IP público do computador que usou para este início rápido. Essa regra é necessária para que seja possível acessar a instância do Banco de Dados SQL do seu computador local.
Obter informações de conexão
Você precisa obter a cadeia de conexão para o banco de dados que você criou quando concluiu Criar um banco de dados no Banco de Dados SQL do Azure usando o Portal do Azure.
Entre no portal do Azure.
Selecione Bancos de Dados SQL no menu à esquerda e selecione seu banco de dados na página Bancos de Dados SQL.
Selecione Cadeias de conexão em Configurações e copie a cadeia de conexão completa do ADO.NET. Na Instância Gerenciada de SQL do Azure, copie a cadeia de conexão do ponto de extremidade público.
Definir a cadeia de conexão
Um aplicativo de funções hospeda a execução de suas funções no Azure. Como uma prática de segurança recomendada, armazene cadeias de conexão e outros segredos nas configurações do seu aplicativo de funções. Usar as configurações do aplicativo impede a divulgação acidental da cadeia de conexão com seu código. Você pode acessar as configurações do aplicativo para seu aplicativo de funções diretamente do Visual Studio.
Você precisa ter publicado o aplicativo anteriormente no Azure. Se você ainda não fez isso, publique o aplicativo de funções no Azure.
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto de aplicativo de funções e escolha Publicar.
Na página Publicar, selecione as elipses (
...
) na área Hospedagem e, em seguida, selecione Gerenciar configurações do Serviço de Aplicativo do Azure.Em Configurações de aplicativo, selecione Adicionar configuração, em Novo nome de configuração do aplicativo, digite
sqldb_connection
e selecione OK.Na configuração sqldb_connection, cole a cadeia de conexão que você copiou na seção anterior no campo Local e substitua os espaços reservados
{your_username}
e{your_password}
por valores reais. Selecione Inserir o valor do local para copiar o valor atualizado para o campo remoto e, em seguida, selecione OK.As cadeias de conexão são armazenadas criptografadas no Azure (Remoto). Para evitar o vazamento de segredos, o arquivo de projeto local.settings.json (Local) deve ser excluídos do controle do código-fonte, por exemplo, por meio de um arquivo .gitignore.
Adicione o pacote do SqlClient ao projeto
Você precisa adicionar o pacote do NuGet que contém a biblioteca do SqlClient. Essa biblioteca de acesso a dados é necessária para se conectar ao Banco de dados SQL.
Abra o projeto de aplicativo de funções local no Visual Studio 2022.
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto do aplicativo de funções e escolha Gerenciar Pacotes NuGet.
Na guia Procurar, pesquise
Microsoft.Data.SqlClient
e quando encontrar, selecione.Na página Microsoft.Data.SqlClient, selecione a versão
5.1.0
e clique em Instalar.Quando a instalação for concluída, revise as alterações e então clique em OK para fechar a janela Visualização.
Se uma janela Aceitação da Licença for exibida, clique em Aceito.
Agora, você pode adicionar o código de função C# que conecta ao Banco de Dados SQL.
Adicionar uma função disparada por temporizador
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto do aplicativo de funções e escolha Adicionar>Nova função do Azure.
Com o modelo do Azure Functions selecionado, nomeie o novo item algo semelhante a
DatabaseCleanup.cs
e selecione Adicionar.Na caixa de diálogo Nova função do Azure, escolha Gatilho de temporizador e, em seguida, Adicionar. Essa caixa de diálogo cria um arquivo de código para a função disparada por temporizador.
Abra o novo arquivo de código e adicione o seguinte, usando as instruções na parte superior do arquivo:
using Microsoft.Data.SqlClient; using System.Threading.Tasks;
Substitua a função
Run
existente por este código:[FunctionName("DatabaseCleanup")] public static async Task Run([TimerTrigger("*/15 * * * * *")]TimerInfo myTimer, ILogger log) { // Get the connection string from app settings and use it to create a connection. var str = Environment.GetEnvironmentVariable("sqldb_connection"); using (SqlConnection conn = new SqlConnection(str)) { conn.Open(); var text = "UPDATE SalesLT.SalesOrderHeader " + "SET [Status] = 5 WHERE ShipDate < GetDate();"; using (SqlCommand cmd = new SqlCommand(text, conn)) { // Execute the command and log the # rows affected. var rows = await cmd.ExecuteNonQueryAsync(); log.LogInformation($"{rows} rows were updated"); } } }
Esta função é executada a cada 15 segundos para atualizar a coluna
Status
com base na data de envio. Para saber mais sobre o Gatilho de temporizador, veja Gatilho de temporizador para o Azure Functions.Pressione F5 para iniciar o aplicativo de funções. A janela de execução das Azure Functions Core Tools é aberta atrás do Visual Studio.
Passados 15 segundos da inicialização, a função é executada. Inspecione a saída e anote o número de linhas atualizadas na tabela SalesOrderHeader.
Na primeira execução, você deve atualizar 32 linhas de dados. As execuções seguintes não atualizam nenhuma linha de dados, a menos que você faça alterações aos dados da tabela SalesOrderHeader para que mais linhas sejam selecionadas pela instrução
UPDATE
.
Se você planeja publicar essa função, lembre-se de alterar o atributo TimerTrigger
para uma agenda de Cron mais razoável do que a cada 15 segundos. Você também precisa garantir que seu aplicativo de funções possa acessar o Banco de Dados SQL do Azure ou Instância Gerenciada de SQL do Azure. Para obter mais informações, confira um dos seguintes links com base no tipo de SQL do Azure:
Próximas etapas
Em seguida, aprenda como usar. Functions com Aplicativos Lógicos para integração com outros serviços.
Para obter mais informações sobre o Functions, veja os seguintes artigos:
-
Referência do desenvolvedor do Azure Functions
Referência do programador para codificação de funções e definição de gatilhos e de associações. -
Testando o Azure Functions
Descreve várias ferramentas e técnicas para testar suas funções.