Dela via


Använda Azure Functions för att ansluta till en Azure SQL Database

Den här artikeln visar hur du använder Azure Functions för att skapa ett schemalagt jobb som ansluter till en Azure SQL Database 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 databas anslutningssträ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 utvecklarreferensen för Azure Functions C#.

Förutsättningar

  • Slutför stegen i artikeln Skapa din första funktion med Visual Studio för att skapa en lokal funktionsapp som riktar sig mot 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 din lokala dator.

Hämta anslutningsinformation

Du måste hämta anslutningssträng 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 hela ADO.NET anslutningssträng. För Azure SQL Managed Instance kopierar du anslutningssträng för offentlig slutpunkt.

    Exempel på ADO.NET-anslutningssträng.

Ange anslutningssträngen

En funktionsapp är värd för körningen av dina funktioner i Azure. Som bästa säkerhet bör du lagra anslutningssträng och andra hemligheter i inställningarna för funktionsappen. Användning av programinställningar förhindrar oavsiktligt avslöjande av anslutningssträng 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. Högerklicka på funktionsappprojektet i Solution Explorer och välj 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 Namn på sqldb_connectionny appinställning och väljer OK.

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

  4. I den nya inställningen sqldb_connection klistrar du in anslutningssträng som du kopierade i föregående avsnitt i fältet Lokalt och ersätter {your_username} och {your_password} platshållarna 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 sql-anslutningssträng inställning.

    Anslutningssträng lagras krypterade i Azure (fjärranslutning). För att förhindra läckage av hemligheter bör den local.settings.json projektfilen (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 funktionsappsprojekt i Visual Studio 2022.

  2. Högerklicka på funktionsappprojektet i Solution Explorer och välj 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. Högerklicka på funktionsappprojektet i Solution Explorer och välj Lägg till>ny Azure-funktion.

  2. Med Azure Functions-mallen markerad namnger du det nya objektet ungefär så här DatabaseCleanup.cs 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 för 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 SalesOrderHeader-tabelldata 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: