Usar o Azure Functions para se 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 um Banco de Dados SQL do Azure ou a uma Instância Gerenciada SQL do Azure. O código da função limpa 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 deve definir uma cadeia de conexão de banco de dados como uma configuração de aplicativo no aplicativo de função. Para a Instância Gerenciada SQL do Azure, você precisa habilitar o ponto de extremidade público para poder se conectar a partir do Azure Functions. Este cenário usa uma operação em massa no banco de dados.
Se esta for sua primeira experiência trabalhando com C# Functions, você deve ler a referência do desenvolvedor 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ção local destinado à versão 2.x ou a uma versão posterior do tempo de execução. Você também deve ter publicado seu projeto em um aplicativo de função 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 exemplo AdventureWorksLT. Para criar o banco de dados de exemplo AdventureWorksLT, conclua as etapas no artigo Criar um banco de dados no Banco de Dados SQL do Azure usando o portal do Azure.
Você deve adicionar uma regra de firewall no nível de servidor para o endereço IP público do computador que você usa para este início rápido. Esta regra é necessária para poder aceder à instância da Base de Dados SQL a partir do computador local.
Obter informações da ligação
Você precisa obter a cadeia de conexão para o banco de dados criado quando concluiu Criar um banco de dados no Banco de Dados SQL do Azure usando o portal do Azure.
Inicie sessão 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 ADO.NET completa. Para a Instância Gerenciada SQL do Azure, copie a cadeia de conexão para o ponto de extremidade público.
Definir a cadeia de ligação
Uma aplicação de função aloja a execução das suas funções no Azure. Como prática recomendada de segurança, armazene cadeias de conexão e outros segredos nas configurações do seu aplicativo de função. O uso das configurações do aplicativo evita 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ção diretamente do Visual Studio.
Você deve ter publicado anteriormente seu aplicativo no Azure. Se ainda não tiver feito isso, publique seu aplicativo de função no Azure.
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto do aplicativo de função e escolha Publicar.
Na página Publicar, selecione as reticências (
...
) na área Hospedagem e escolha Gerenciar configurações do Serviço de Aplicativo do Azure.Em Configurações do aplicativo, selecione Adicionar configuração, em Novo tipo
sqldb_connection
de nome de configuração do aplicativo e selecione OK.Na nova configuração sqldb_connection , cole a cadeia de conexão copiada na seção anterior no campo Local e substitua
{your_username}
os{your_password}
espaços reservados por valores reais. Selecione Inserir 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ído do controle do código-fonte, como usando um arquivo .gitignore.
Adicionar o pacote SqlClient ao projeto
Você precisa adicionar o pacote NuGet que contém a biblioteca SqlClient. Essa biblioteca de acesso a dados é necessária para se conectar ao Banco de dados SQL.
Abra seu projeto de aplicativo de função local no Visual Studio 2022.
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto do aplicativo de função e escolha Gerenciar Pacotes NuGet.
No separador Procurar, procure
Microsoft.Data.SqlClient
e, quando o encontrar, selecione-o.Na página Microsoft.Data.SqlClient, selecione versão
5.1.0
e clique em Instalar.Quando a instalação estiver concluída, reveja as alterações e, em seguida, clique em OK para fechar a janela Pré-visualização.
Se for apresentada uma janela Aceitação de Licença, clique em Aceito.
Agora, você pode adicionar o código de função C# que se conecta ao seu Banco de dados SQL.
Adicionar uma função acionada por temporizador
No Gerenciador de Soluções, clique com o botão direito do mouse no projeto de aplicativo de função e escolha Adicionar>Nova Função do Azure.
Com o modelo do Azure Functions selecionado, nomeie o novo item como algo como
DatabaseCleanup.cs
e selecione Adicionar.Na caixa de diálogo Nova função do Azure, escolha Gatilho de temporizador e, em seguida, Adicionar. Esta caixa de diálogo cria um arquivo de código para a função acionada pelo temporizador.
Abra o novo arquivo de código e adicione as seguintes instruções using na parte superior do arquivo:
using Microsoft.Data.SqlClient; using System.Threading.Tasks;
Substitua a função existente
Run
pelo seguinte 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
Status
coluna com base na data de envio. Para saber mais sobre o gatilho de temporizador, consulte Gatilho de temporizador para o Azure Functions.Pressione F5 para iniciar o aplicativo de função. A janela de execução das Ferramentas Principais do Azure Functions é aberta atrás do Visual Studio.
Em 15 segundos após a inicialização, a função é executada. Observe 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 a seguir não atualizam nenhuma linha de dados, a menos que você faça alterações nos dados da tabela SalesOrderHeader para que mais linhas sejam selecionadas pela
UPDATE
instrução.
Se você planeja publicar essa função, lembre-se de alterar o TimerTrigger
atributo para uma programação cron mais razoável do que a cada 15 segundos. Você também precisa garantir que seu aplicativo de função possa acessar o Banco de Dados SQL do Azure ou a Instância Gerenciada SQL do Azure. Para obter mais informações, consulte um dos seguintes links com base no seu tipo de SQL do Azure:
Próximos passos
A seguir, saiba como usar. Funções com Logic Apps para integração com outros serviços.
Para obter mais informações sobre funções, consulte os seguintes artigos:
-
Referência para programadores das Funções do Azure
Referência para programadores para codificar funções e definir acionadores e enlaces. -
Testar as Funções do Azure
Descreve várias ferramentas e técnicas para testar as suas funções.