Utilizar Funções do Azure para ligar a uma Base de Dados do SQL do Azure
Este artigo mostra-lhe como utilizar Funções do Azure para criar uma tarefa agendada que se liga a uma Base de Dados do SQL do Azure ou Azure SQL Managed Instance. O código de função limpa linhas numa tabela na base de dados. A nova função C# é criada com base num modelo de acionador de temporizador predefinido no Visual Studio 2019. Para suportar este cenário, também tem de definir uma cadeia de ligação de base de dados como uma definição de aplicação na aplicação de funções. Para Azure SQL Managed Instance tem de ativar o ponto final público para poder ligar a partir de Funções do Azure. Este cenário utiliza uma operação em massa na base de dados.
Se esta for a sua primeira experiência a trabalhar com funções C#, deve ler a Funções do Azure referência de programador C#.
Pré-requisitos
Conclua os passos no artigo Criar a sua primeira função com o Visual Studio para criar uma aplicação de funções local que visa a versão 2.x ou uma versão posterior do runtime. Também tem de publicar o projeto numa aplicação de funções no Azure.
Este artigo demonstra um comando Transact-SQL que executa uma operação de limpeza em massa na tabela SalesOrderHeader na base de dados de exemplo AdventureWorksLT. Para criar a base de dados de exemplo AdventureWorksLT, conclua os passos no artigo Criar uma base de dados na Base de Dados SQL do Azure com o portal do Azure.
Tem de adicionar uma regra de firewall ao nível do servidor para o endereço IP público do computador que utiliza para este início rápido. Esta regra é necessária para poder aceder à instância Base de Dados SQL a partir do seu computador local.
Obter informações da ligação
Tem de obter a cadeia de ligação da base de dados que criou quando concluiu Criar uma base de dados na Base de Dados do SQL do Azure com o portal do Azure.
Inicie sessão no Portal do Azure.
Selecione Bases de Dados SQL no menu esquerdo e selecione a base de dados na página Bases de dados SQL .
Selecione Cadeias de ligação em Definições e copie a cadeia de ligação completa ADO.NET . Para Azure SQL Managed Instance copie a cadeia de ligação para o ponto final 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 melhor prática de segurança, armazene cadeias de ligação e outros segredos nas definições da aplicação de funções. A utilização das definições da aplicação impede a divulgação acidental da cadeia de ligação com o seu código. Pode aceder às definições da aplicação de funções diretamente a partir do Visual Studio.
Tem de ter publicado anteriormente a sua aplicação no Azure. Se ainda não o fez, publique a aplicação de funções no Azure.
No Explorador de Soluções, clique com o botão direito do rato no projeto da aplicação de funções e selecione Publicar.
Na página Publicar, selecione as reticências (
...
) na área Alojamento e selecione Gerir Serviço de Aplicações do Azure definições.Em Definições da Aplicação, selecione Adicionar definição, em Novo tipo
sqldb_connection
de nome de definição da aplicação e selecione OK.Na nova definição de sqldb_connection , cole a cadeia de ligação que copiou na secção anterior no campo Local e substitua
{your_username}
e{your_password}
os marcadores de posição 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 ligação são armazenadas encriptadas no Azure (Remoto). Para impedir a fuga de segredos, o ficheiro de projeto local.settings.json (Local) deve ser excluído do controlo de origem, tal como através de um ficheiro .gitignore.
Adicionar o pacote SqlClient ao projeto
Tem de adicionar o pacote NuGet que contém a biblioteca SqlClient. Esta biblioteca de acesso a dados é necessária para ligar a Base de Dados SQL.
Abra o projeto da aplicação de funções local no Visual Studio 2022.
No Explorador de Soluções, clique com o botão direito do rato no projeto da aplicação de funções e selecione Gerir 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, em seguida, 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, pode adicionar o código de função C# que se liga à sua Base de Dados SQL.
Adicionar uma função acionada por temporizador
No Explorador de Soluções, clique com o botão direito do rato no projeto da aplicação de funções e selecione Adicionar>Nova função do Azure.
Com o modelo Funções do Azure selecionado, atribua um nome semelhante ao novo item
DatabaseCleanup.cs
e selecione Adicionar.Na caixa de diálogo Nova função do Azure , selecione Acionador de temporizador e, em seguida, Adicionar. Esta caixa de diálogo cria um ficheiro de código para a função acionada pelo temporizador.
Abra o novo ficheiro de código e adicione as seguintes instruções using na parte superior do ficheiro:
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 acionador de Temporizador, veja Acionador de temporizador para Funções do Azure.Prima F5 para iniciar a aplicação de funções. A janela de execução do Funções do Azure Core Tools é aberta atrás do Visual Studio.
15 segundos após o arranque, a função é executada. Veja o resultado e anote o número de linhas atualizadas na tabela SalesOrderHeader .
Na primeira execução, deve atualizar 32 linhas de dados. As execuções seguintes não atualizam linhas de dados, a menos que faça alterações aos dados da tabela SalesOrderHeader para que sejam selecionadas mais linhas pela
UPDATE
instrução .
Se planear publicar esta função, lembre-se de alterar o TimerTrigger
atributo para uma agenda cron mais razoável do que a cada 15 segundos. Também tem de se certificar de que a sua aplicação de funções pode aceder à Base de Dados do SQL do Azure ou Azure SQL Managed Instance. Para obter mais informações, consulte uma das seguintes ligações com base no seu tipo de SQL do Azure:
Passos seguintes
Em seguida, saiba como utilizar. Funciona com o Logic Apps para integrar noutros serviços.
Para obter mais informações sobre as 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.