Azure Functions gebruiken om verbinding te maken met een Azure SQL Database
In dit artikel leest u hoe u Azure Functions gebruikt om een geplande taak te maken die verbinding maakt met een Azure SQL Database of Azure SQL Managed Instance. Met de functiecode worden rijen in een tabel in de database opgeschoond. De nieuwe C#-functie wordt gemaakt op basis van een vooraf gedefinieerde timertriggersjabloon in Visual Studio 2019. Ter ondersteuning van dit scenario moet u ook een database instellen verbindingsreeks als app-instelling in de functie-app. Voor Azure SQL Managed Instance moet u het openbare eindpunt inschakelen om verbinding te kunnen maken vanuit Azure Functions. In dit scenario wordt een bulkbewerking voor de database gebruikt.
Als dit uw eerste ervaring is met het werken met C#Functions, moet u de naslaginformatie voor Azure Functions C#-ontwikkelaars lezen.
Vereisten
Voer de stappen in het artikel Uw eerste functie maken met Visual Studio uit om een lokale functie-app te maken die is gericht op versie 2.x of een latere versie van de runtime. U moet uw project ook hebben gepubliceerd naar een functie-app in Azure.
In dit artikel wordt een Transact-SQL-opdracht gedemonstreerd die een bulksgewijze opschoonbewerking uitvoert in de tabel SalesOrderHeader in de AdventureWorksLT-voorbeelddatabase. Als u de AdventureWorksLT-voorbeelddatabase wilt maken, voert u de stappen in het artikel Een database maken in Azure SQL Database uit met behulp van Azure Portal.
U moet een firewallregel op serverniveau toevoegen voor het openbare IP-adres van de computer die u voor deze quickstart gebruikt. Deze regel is vereist om toegang te krijgen tot het SQL Database-exemplaar vanaf uw lokale computer.
Verbindingsgegevens ophalen
U moet de verbindingsreeks ophalen voor de database die u hebt gemaakt toen u klaar was met het maken van een database in Azure SQL Database met behulp van Azure Portal.
Meld u aan bij het Azure-portaal.
Selecteer SQL-databases in het linkermenu en selecteer uw database op de pagina SQL-databases .
Selecteer Verbindingsreeksen onder Instellingen en kopieer de volledige ADO.NET verbindingsreeks. Kopieer voor Azure SQL Managed Instance verbindingsreeks voor een openbaar eindpunt.
De verbindingsreeks instellen
Een functie-app fungeert als host voor de uitvoering van uw functies in Azure. Sla verbindingsreeks s en andere geheimen op in de instellingen van uw functie-app. Het gebruik van toepassingsinstellingen voorkomt onbedoelde openbaarmaking van de verbindingsreeks met uw code. U hebt rechtstreeks vanuit Visual Studio toegang tot app-instellingen voor uw functie-app.
U moet uw app eerder hebben gepubliceerd naar Azure. Als u dit nog niet hebt gedaan, publiceert u uw functie-app naar Azure.
Klik in Solution Explorer met de rechtermuisknop op het functie-app-project en kies Publiceren.
Selecteer op de pagina Publiceren het beletselteken (
...
) in het gebied Hosting en kies Azure-app Service-instellingen beheren.Selecteer in Toepassingsinstellingen de optie Instelling toevoegen, typ de naam van
sqldb_connection
de nieuwe app-instelling en selecteer OK.Plak in de nieuwe sqldb_connection-instelling de verbindingsreeks die u in de vorige sectie in het veld Lokaal hebt gekopieerd en vervang
{your_username}
en{your_password}
tijdelijke aanduidingen door echte waarden. Selecteer Waarde invoegen van lokaal om de bijgewerkte waarde naar het veld Extern te kopiëren en selecteer vervolgens OK.De verbindingsreeks s worden versleuteld opgeslagen in Azure (Extern). Om te voorkomen dat geheimen worden gelekt, moet het local.settings.json projectbestand (Lokaal) worden uitgesloten van broncodebeheer, zoals met behulp van een .gitignore-bestand.
Het SqlClient-pakket toevoegen aan het project
U moet het NuGet-pakket toevoegen dat de SqlClient-bibliotheek bevat. Deze gegevenstoegangsbibliotheek is nodig om verbinding te maken met SQL Database.
Open uw lokale functie-app-project in Visual Studio 2022.
Klik in Solution Explorer met de rechtermuisknop op het functie-app-project en kies NuGet-pakketten beheren.
Zoek op het tabblad Bladeren naar
Microsoft.Data.SqlClient
en selecteer deze.Selecteer op de pagina Microsoft.Data.SqlClient de versie
5.1.0
en klik vervolgens op Installeren.Wanneer de installatie is voltooid, controleert u de wijzigingen en klikt u vervolgens op OK om het venster Preview te sluiten.
Als een venster voor akkoord gaan met de licentie wordt weergegeven, klikt u op Ik ga akkoord.
U kunt nu de C#-functiecode toevoegen die verbinding maakt met uw SQL Database.
Een door een timer geactiveerde functie toevoegen
Klik in Solution Explorer met de rechtermuisknop op het functie-app-project en kies Nieuwe Azure-functie toevoegen>.
Selecteer de Azure Functions-sjabloon en geef het nieuwe item een naam die er ongeveer als volgt uitziet
DatabaseCleanup.cs
en selecteer Toevoegen.Kies in het dialoogvenster Nieuwe Azure-functie timertrigger en vervolgens Toevoegen. In dit dialoogvenster wordt een codebestand gemaakt voor de door de timer geactiveerde functie.
Open het nieuwe codebestand en voeg het volgende toe met behulp van instructies boven aan het bestand:
using Microsoft.Data.SqlClient; using System.Threading.Tasks;
Vervang de bestaande
Run
functie door de volgende code:[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"); } } }
Deze functie wordt elke 15 seconden uitgevoerd om de
Status
kolom bij te werken op basis van de verzenddatum. Zie Timertrigger voor Azure Functions voor meer informatie over de timertrigger.Druk op F5 om de functie-app te starten. Het uitvoeringsvenster van Azure Functions Core Tools wordt geopend achter Visual Studio.
Na 15 seconden na het opstarten wordt de functie uitgevoerd. Bekijk de uitvoer en noteer het aantal rijen dat is bijgewerkt in de tabel SalesOrderHeader .
Bij de eerste uitvoering moet u 32 rijen met gegevens bijwerken. Als de volgende uitvoeringen worden uitgevoerd, worden er geen gegevensrijen bijgewerkt, tenzij u wijzigingen aanbrengt in de tabelgegevens van SalesOrderHeader, zodat er meer rijen door de
UPDATE
instructie worden geselecteerd.
Als u van plan bent deze functie te publiceren, moet u het TimerTrigger
kenmerk wijzigen in een redelijker cron-schema dan elke 15 seconden. U moet er ook voor zorgen dat uw functie-app toegang heeft tot azure SQL Database of Azure SQL Managed Instance. Zie een van de volgende koppelingen op basis van uw type Azure SQL voor meer informatie:
Volgende stappen
Hierna leert u hoe u dit kunt gebruiken. Functies met Logic Apps om te integreren met andere services.
Zie de volgende artikelen voor meer informatie over Functions:
-
Naslaginformatie over Azure Functions voor ontwikkelaars
Naslaginformatie voor programmeurs over het coderen van functies en het definiëren van triggers en bindingen. -
Azure Functions testen
Beschrijft de verschillende hulpprogramma’s en technieken voor het testen van uw functies.