Använd Azure Functions för att ansluta till en Azure SQL-databas
Den här artikeln visar hur du använder Azure Functions för att skapa ett schemalagt jobb som ansluter till en Azure SQL-databas eller Azure SQL Managed Instance. Funktionskoden rensar rader i en tabell i databasen. Den nya C#-funktionen skapas baserat på en fördefinierad timerutlösarmall i Visual Studio 2019. För att stödja det här scenariot måste du också ange en databasanslutningssträng som en appinställning i funktionsappen. För Azure SQL Managed Instance måste du aktivera offentlig slutpunkt för att kunna ansluta från Azure Functions. I det här scenariot används en massåtgärd mot databasen.
Om det här är din första erfarenhet av att arbeta med C# Functions bör du läsa Azure Functions C#-utvecklarreferensen.
Förutsättningar
Slutför stegen i artikeln Skapa din första funktion med Visual Studio för att skapa en lokal funktionsapp som är avsedd för version 2.x eller en senare version av körningen. Du måste också ha publicerat projektet till en funktionsapp i Azure.
Den här artikeln visar ett Transact-SQL-kommando som kör en massrensningsåtgärd i tabellen SalesOrderHeader i AdventureWorksLT-exempeldatabasen. Om du vill skapa AdventureWorksLT-exempeldatabasen slutför du stegen i artikeln Skapa en databas i Azure SQL Database med hjälp av Azure Portal.
Du måste lägga till en brandväggsregel på servernivå för den offentliga IP-adressen för den dator som du använder för den här snabbstarten. Den här regeln krävs för att kunna komma åt SQL Database-instansen från den lokala datorn.
Hämta anslutningsinformation
Du måste hämta anslutningssträngen för databasen som du skapade när du slutförde Skapa en databas i Azure SQL Database med hjälp av Azure Portal.
Logga in på Azure-portalen.
Välj SQL-databaser på den vänstra menyn och välj din databas på sidan SQL-databaser .
Välj Anslutningssträngar under Inställningar och kopiera den fullständiga ADO.NET anslutningssträngen. För Azure SQL Managed Instance kopiera anslutningssträng för offentlig slutpunkt.
Ange anslutningssträngen
En funktionsapp är värd för körningen av dina funktioner i Azure. Vi rekommenderar att du lagrar anslutningssträngar och andra hemligheter i inställningarna för funktionsappen. Användning av programinställningar förhindrar oavsiktligt avslöjande av anslutningssträngen med din kod. Du kan komma åt appinställningar för funktionsappen direkt från Visual Studio.
Du måste tidigare ha publicerat din app till Azure. Om du inte redan har gjort det publicerar du funktionsappen till Azure.
I Solution Explorer högerklickar du på funktionsappprojektet och väljer Publicera.
På sidan Publicera väljer du ellipserna (
...
) i området Värd och väljer Hantera Azure App Service inställningar.I Programinställningar väljer du Lägg till inställning, i Ny appinställningsnamntyp
sqldb_connection
och väljer OK.I den nya inställningen sqldb_connection klistrar du in anslutningssträngen som du kopierade i föregående avsnitt i fältet Lokalt och ersätter
{your_username}
platshållarna och{your_password}
med verkliga värden. Välj Infoga värde från lokalt för att kopiera det uppdaterade värdet till fältet Fjärr och välj sedan OK.Anslutningssträngarna lagras krypterade i Azure (Remote). För att förhindra läckande hemligheter bör projektfilen local.settings.json (Lokal) undantas från källkontrollen, till exempel med hjälp av en .gitignore-fil.
Lägg till SqlClient-paketet i projektet
Du måste lägga till NuGet-paketet som innehåller SqlClient-biblioteket. Det här dataåtkomstbiblioteket behövs för att ansluta till SQL Database.
Öppna ditt lokala funktionsappprojekt i Visual Studio 2022.
I Solution Explorer högerklickar du på funktionsappprojektet och väljer Hantera NuGet-paket.
På fliken Bläddra söker du efter
Microsoft.Data.SqlClient
och markerar det när du hittar det.På sidan Microsoft.Data.SqlClient väljer du version
5.1.0
och klickar sedan på Installera.När installationen har slutförts granskar du ändringarna och klickar på OK för att stänga fönstret Förhandsgranska.
Om ett fönster för Godkännande av licens visas klickar du på Jag accepterar.
Nu kan du lägga till C#-funktionskoden som ansluter till din SQL Database.
Skapa en timerutlöst funktion
I Solution Explorer högerklickar du på funktionsappprojektet och väljer Lägg till>ny Azure-funktion.
Med den Azure Functions mallen markerad namnger du det nya objektet något i stil
DatabaseCleanup.cs
med och väljer Lägg till.I dialogrutan Ny Azure-funktion väljer du Timer-utlösare och sedan Lägg till. Den här dialogrutan skapar en kodfil för den timerutlösta funktionen.
Öppna den nya kodfilen och lägg till följande med hjälp av -instruktioner överst i filen:
using Microsoft.Data.SqlClient; using System.Threading.Tasks;
Ersätt den befintliga
Run
funktionen med följande kod:[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"); } } }
Den här funktionen körs var 15:e sekund för att uppdatera
Status
kolumnen baserat på leveransdatumet. Mer information om Timer-utlösaren finns i Timer-utlösare för Azure Functions.Tryck på F5 för att starta funktionsappen. Körningsfönstret Azure Functions Core Tools öppnas bakom Visual Studio.
Vid 15 sekunder efter start körs funktionen. Titta på utdata och notera antalet rader som har uppdaterats i tabellen SalesOrderHeader .
Vid den första körningen bör du uppdatera 32 rader med data. Följande körningar uppdaterar inga datarader, såvida du inte gör ändringar i tabelldata för SalesOrderHeader så att fler rader väljs av -instruktionen
UPDATE
.
Om du planerar att publicera den här funktionen ska du komma ihåg att ändra TimerTrigger
attributet till ett mer rimligt cron-schema än var 15:e sekund. Du måste också se till att funktionsappen kan komma åt Azure SQL Database eller Azure SQL Managed Instance. Mer information finns i någon av följande länkar baserat på din typ av Azure SQL:
Nästa steg
Lär dig sedan hur du använder. Funktioner med Logic Apps för att integrera med andra tjänster.
Mer information om Functions finns i följande artiklar:
-
Azure Functions, info för utvecklare
Info för programmerare om att koda funktioner och definiera utlösare och bindningar. -
Testa Azure Functions
Beskriver olika verktyg och tekniker för att testa funktioner.