Share via


Azure Functions gebruiken om verbinding te maken met een Azure SQL-database

In dit artikel wordt beschreven 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 is gemaakt op basis van een vooraf gedefinieerde sjabloon voor timertriggers in Visual Studio 2019. Ter ondersteuning van dit scenario moet u ook een database-connection string instellen 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#-functies, 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 waarmee een bulkopschoonbewerking wordt uitgevoerd in de tabel SalesOrderHeader in de voorbeelddatabase AdventureWorksLT. Als u de AdventureWorksLT-voorbeelddatabase wilt maken, voert u de stappen uit in het artikel Een database maken in Azure SQL database met behulp van de 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 voor toegang tot het SQL Database-exemplaar vanaf uw lokale computer.

Verbindingsgegevens ophalen

U moet de connection string ophalen voor de database die u hebt gemaakt tijdens het maken van een database in Azure SQL Database met behulp van de Azure Portal.

  1. Meld u aan bij de Azure-portal.

  2. Selecteer SQL Databases in het linkermenu en selecteer uw database op de pagina SQL-databases .

  3. Selecteer Verbindingsreeksen onder Instellingen en kopieer de volledige ADO.NET connection string. Kopieer voor Azure SQL Managed Instance connection string voor een openbaar eindpunt.

    Kopieer de ADO.NET connection string.

De verbindingsreeks instellen

Een functie-app fungeert als host voor de uitvoering van uw functies in Azure. Als aanbevolen beveiligingsprocedure kunt u verbindingsreeksen en andere geheimen opslaan in de instellingen van uw functie-app. Het gebruik van toepassingsinstellingen voorkomt onbedoelde openbaarmaking van de connection string met uw code. U hebt rechtstreeks vanuit Visual Studio toegang tot de app-instellingen voor uw functie-app.

U moet uw app eerder naar Azure hebben gepubliceerd. Als u dit nog niet hebt gedaan, publiceert u uw functie-app naar Azure.

  1. Klik in Solution Explorer met de rechtermuisknop op het functie-app-project en kies Publiceren.

  2. Selecteer op de pagina Publiceren het beletselteken (...) in het gebied Hosting en kies Azure App Service instellingen beheren.

    Beheer App Service instellingen voor de functie-app.

  3. In Toepassingsinstellingen selecteert u Instelling toevoegen, typt sqldb_connectionu in Naam van nieuwe app-instelling en selecteert u OK.

    Voeg een app-instelling toe voor de functie-app.

  4. Plak in de nieuwe instelling sqldb_connection de connection string die u in de vorige sectie hebt gekopieerd in het veld Lokaal en vervang {your_username} de tijdelijke aanduidingen door {your_password} echte waarden. Selecteer Waarde invoegen vanuit lokaal om de bijgewerkte waarde te kopiëren naar het veld Extern en selecteer vervolgens OK.

    Sql connection string-instelling toevoegen.

    De verbindingsreeksen worden versleuteld opgeslagen in Azure (extern). Om te voorkomen dat geheimen worden gelekt, moet het projectbestand local.settings.json (Lokaal) worden uitgesloten van broncodebeheer, bijvoorbeeld 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 bibliotheek voor gegevenstoegang is nodig om verbinding te maken met SQL Database.

  1. Open uw lokale functie-app-project in Visual Studio 2022.

  2. Klik in Solution Explorer met de rechtermuisknop op het functie-app-project en kies NuGet-pakketten beheren.

  3. Zoek op het tabblad Bladeren naar Microsoft.Data.SqlClient en selecteer deze.

  4. Selecteer versie 5.1.0 op de pagina Microsoft.Data.SqlClient en klik vervolgens op Installeren.

  5. Wanneer de installatie is voltooid, controleert u de wijzigingen en klikt u vervolgens op OK om het venster Preview te sluiten.

  6. 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

  1. Klik in Solution Explorer met de rechtermuisknop op het functie-app-project en kiesNieuwe Azure-functietoevoegen>.

  2. Terwijl de Azure Functions sjabloon is geselecteerd, geeft u het nieuwe item een naam zoals DatabaseCleanup.cs en selecteert u Toevoegen.

  3. Kies in het dialoogvenster Nieuwe Azure-functiede optie Timertrigger en vervolgens Toevoegen. In dit dialoogvenster wordt een codebestand gemaakt voor de door de timer geactiveerde functie.

  4. Open het nieuwe codebestand en voeg het volgende toe met behulp van instructies bovenaan het bestand:

    using Microsoft.Data.SqlClient;
    using System.Threading.Tasks;
    
  5. 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.

  6. Druk op F5 om de functie-app te starten. Het uitvoeringsvenster Azure Functions Core Tools wordt achter Visual Studio geopend.

  7. 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 .

    Bekijk de functielogboeken.

    Bij de eerste uitvoering moet u 32 rijen met gegevens bijwerken. Met de volgende uitvoeringen worden geen gegevensrijen bijgewerkt, tenzij u wijzigingen aanbrengt in de tabelgegevens van SalesOrderHeader, zodat er meer rijen worden geselecteerd door de UPDATE instructie.

Als u van plan bent om 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 de 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

Vervolgens leert u hoe u deze kunt gebruiken. Functies met Logic Apps om te integreren met andere services.

Zie de volgende artikelen voor meer informatie over Functions: