Dela via


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

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.

  1. Logga in på Azure-portalen.

  2. Välj SQL-databaser på den vänstra menyn och välj din databas på sidan SQL-databaser .

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

    Kopiera ADO.NET anslutningssträngen.

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.

  1. I Solution Explorer högerklickar du på funktionsappprojektet och väljer Publicera.

  2. På sidan Publicera väljer du ellipserna (...) i området Värd och väljer Hantera Azure App Service inställningar.

    Hantera App Service inställningar för funktionsappen.

  3. I Programinställningar väljer du Lägg till inställning, i Ny appinställningsnamntypsqldb_connectionoch väljer OK.

    Lägg till en appinställning för funktionsappen.

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

    Lägg till inställning för SQL-anslutningssträng.

    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.

  1. Öppna ditt lokala funktionsappprojekt i Visual Studio 2022.

  2. I Solution Explorer högerklickar du på funktionsappprojektet och väljer Hantera NuGet-paket.

  3. På fliken Bläddra söker du efter Microsoft.Data.SqlClient och markerar det när du hittar det.

  4. På sidan Microsoft.Data.SqlClient väljer du version 5.1.0 och klickar sedan på Installera.

  5. När installationen har slutförts granskar du ändringarna och klickar på OK för att stänga fönstret Förhandsgranska.

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

  1. I Solution Explorer högerklickar du på funktionsappprojektet och väljer Lägg till>ny Azure-funktion.

  2. Med den Azure Functions mallen markerad namnger du det nya objektet något i stil DatabaseCleanup.cs med och väljer Lägg till.

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

  4. Ö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;
    
  5. 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.

  6. Tryck på F5 för att starta funktionsappen. Körningsfönstret Azure Functions Core Tools öppnas bakom Visual Studio.

  7. Vid 15 sekunder efter start körs funktionen. Titta på utdata och notera antalet rader som har uppdaterats i tabellen SalesOrderHeader .

    Visa funktionsloggarna.

    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: