Nawiązywanie połączenia z bazą danych Azure SQL przy użyciu Azure Functions

W tym artykule pokazano, jak za pomocą Azure Functions utworzyć zaplanowane zadanie łączące się z usługą Azure SQL Database lub Azure SQL Managed Instance. Kod funkcji czyści wiersze w tabeli w bazie danych. Nowa funkcja języka C# jest tworzona na podstawie wstępnie zdefiniowanego szablonu wyzwalacza czasomierza w programie Visual Studio 2019. Aby obsługiwać ten scenariusz, należy również ustawić parametry połączenia bazy danych jako ustawienie aplikacji w aplikacji funkcji. W przypadku Azure SQL Managed Instance należy włączyć publiczny punkt końcowy, aby móc nawiązać połączenie z Azure Functions. W tym scenariuszu jest używana operacja zbiorcza względem bazy danych.

Jeśli jest to pierwsze doświadczenie w pracy z funkcjami języka C#, przeczytaj dokumentację dla deweloperów Azure Functions C#.

Wymagania wstępne

Pobieranie informacji o połączeniu

Parametry połączenia dla bazy danych utworzonej po ukończeniu tworzenia bazy danych w usłudze Azure SQL Database należy pobrać przy użyciu Azure Portal.

  1. Zaloguj się do Azure portal.

  2. Wybierz pozycję Bazy danych SQL z menu po lewej stronie i wybierz bazę danych na stronie Bazy danych SQL .

  3. Wybierz pozycję Parametry połączenia w obszarze Ustawienia i skopiuj pełne ADO.NET parametry połączenia. W przypadku Azure SQL Managed Instance skopiuj parametry połączenia dla publicznego punktu końcowego.

    Skopiuj parametry połączenia ADO.NET.

Ustawianie parametrów połączenia

Aplikacja funkcji obsługuje wykonywanie funkcji na platformie Azure. Najlepszym rozwiązaniem w zakresie zabezpieczeń jest przechowywanie parametrów połączenia i innych wpisów tajnych w ustawieniach aplikacji funkcji. Użycie ustawień aplikacji uniemożliwia przypadkowe ujawnienie parametrów połączenia z kodem. Dostęp do ustawień aplikacji funkcji można uzyskać bezpośrednio w programie Visual Studio.

Musisz wcześniej opublikować aplikację na platformie Azure. Jeśli jeszcze tego nie zrobiono, opublikuj aplikację funkcji na platformie Azure.

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji funkcji i wybierz polecenie Publikuj.

  2. Na stronie Publikowanie wybierz wielokropek (...) w obszarze Hosting, a następnie wybierz pozycję Zarządzaj ustawieniami Azure App Service.

    Zarządzaj ustawieniami App Service dla aplikacji funkcji.

  3. W obszarze Ustawienia aplikacji wybierz pozycję Dodaj ustawienie, w polu Nazwa nowego ustawienia aplikacji wpisz sqldb_connection, a następnie wybierz przycisk OK.

    Dodaj ustawienie aplikacji dla aplikacji funkcji.

  4. W nowym ustawieniu sqldb_connection wklej parametry połączenia skopiowane w poprzedniej sekcji do pola Lokalne i zastąp {your_username}{your_password} symbole zastępcze rzeczywistymi wartościami. Wybierz pozycję Wstaw wartość z lokalizacji lokalnej , aby skopiować zaktualizowaną wartość do pola Zdalne , a następnie wybierz przycisk OK.

    Dodaj ustawienie parametrów połączenia SQL.

    Parametry połączenia są przechowywane zaszyfrowane na platformie Azure (zdalne). Aby zapobiec wyciekowi wpisów tajnych, plik projektu local.settings.json (lokalny) powinien zostać wykluczony z kontroli źródła, na przykład przy użyciu pliku gitignore.

Dodawanie pakietu SqlClient do projektu

Należy dodać pakiet NuGet zawierający bibliotekę SqlClient. Ta biblioteka dostępu do danych jest potrzebna do nawiązania połączenia z SQL Database.

  1. Otwórz lokalny projekt aplikacji funkcji w programie Visual Studio 2022.

  2. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji funkcji i wybierz polecenie Zarządzaj pakietami NuGet.

  3. Na karcie Przeglądaj wyszukaj pozycję Microsoft.Data.SqlClient i po znalezieniu wybierz ją.

  4. Na stronie Microsoft.Data.SqlClient wybierz wersję 5.1.0 , a następnie kliknij przycisk Zainstaluj.

  5. Po zakończeniu instalacji przejrzyj zmiany, a następnie kliknij przycisk OK, aby zamknąć okno Podgląd.

  6. W przypadku wyświetlenia okna Akceptacja licencji kliknij przycisk Akceptuję.

Teraz możesz dodać kod funkcji języka C#, który łączy się z SQL Database.

Dodawanie funkcji wyzwalanej czasomierzem

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji funkcji i wybierz polecenie Dodaj>nową funkcję platformy Azure.

  2. Po wybraniu szablonu Azure Functions nazwij nowy element podobny DatabaseCleanup.cs do i wybierz pozycję Dodaj.

  3. W oknie dialogowym Nowa funkcja platformy Azure wybierz pozycję Wyzwalacz czasomierza , a następnie pozycję Dodaj. To okno dialogowe tworzy plik kodu dla funkcji wyzwalanej przez czasomierz.

  4. Otwórz nowy plik kodu i dodaj następujące instrukcje using w górnej części pliku:

    using Microsoft.Data.SqlClient;
    using System.Threading.Tasks;
    
  5. Zastąp istniejącą Run funkcję następującym kodem:

    [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");
            }
        }
    }
    

    Ta funkcja jest uruchamiana co 15 sekund, aby zaktualizować kolumnę Status na podstawie daty wysyłki. Aby dowiedzieć się więcej na temat wyzwalacza czasomierza, zobacz Wyzwalacz czasomierza dla Azure Functions.

  6. Naciśnij klawisz F5 , aby uruchomić aplikację funkcji. Zostanie otwarte okno wykonywania Azure Functions Core Tools za programem Visual Studio.

  7. Po uruchomieniu po 15 sekundach funkcja jest uruchamiana. Obserwuj dane wyjściowe i zanotuj liczbę wierszy zaktualizowanych w tabeli SalesOrderHeader .

    Wyświetl dzienniki funkcji.

    W pierwszym wykonaniu należy zaktualizować 32 wiersze danych. Po uruchomieniu polecenia nie są aktualizowane żadne wiersze danych, chyba że wprowadzisz zmiany w danych tabeli SalesOrderHeader, aby więcej wierszy było wybieranych przez instrukcję UPDATE .

Jeśli planujesz opublikować tę funkcję, pamiętaj, aby zmienić TimerTrigger atrybut na bardziej rozsądny harmonogram cron niż co 15 sekund. Należy również upewnić się, że aplikacja funkcji może uzyskiwać dostęp do bazy danych Azure SQL Lub Azure SQL Managed Instance. Aby uzyskać więcej informacji, zobacz jeden z następujących linków na podstawie typu Azure SQL:

Następne kroki

Następnie dowiedz się, jak używać. Funkcje z usługą Logic Apps do integracji z innymi usługami.

Aby uzyskać więcej informacji na temat usługi Functions, zobacz następujące artykuły: