Nawiązywanie połączenia z usługą Azure SQL Database przy użyciu usługi Azure Functions
W tym artykule pokazano, jak za pomocą usługi Azure Functions utworzyć zaplanowane zadanie łączące się z usługą Azure SQL Database lub usługą 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 usługi Azure SQL Managed Instance należy włączyć publiczny punkt końcowy , aby móc nawiązać połączenie z usługi 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#, zapoznaj się z dokumentacją dla deweloperów usługi Azure Functions w języku C#.
Wymagania wstępne
Wykonaj kroki opisane w artykule Tworzenie pierwszej funkcji przy użyciu programu Visual Studio , aby utworzyć lokalną aplikację funkcji przeznaczoną dla wersji 2.x lub nowszej wersji środowiska uruchomieniowego. Musisz również opublikować projekt w aplikacji funkcji na platformie Azure.
W tym artykule przedstawiono polecenie Języka Transact-SQL, które wykonuje operację oczyszczania zbiorczego w tabeli SalesOrderHeader w przykładowej bazie danych AdventureWorksLT. Aby utworzyć przykładową bazę danych AdventureWorksLT, wykonaj kroki opisane w artykule Tworzenie bazy danych w usłudze Azure SQL Database przy użyciu witryny Azure Portal.
Należy dodać regułę zapory na poziomie serwera dla publicznego adresu IP komputera używanego w tym przewodniku Szybki start. Ta reguła jest wymagana do uzyskania dostępu do wystąpienia usługi SQL Database z komputera lokalnego.
Pobieranie informacji o połączeniu
Musisz uzyskać parametry połączenia dla bazy danych utworzonej po zakończeniu tworzenia bazy danych w usłudze Azure SQL Database przy użyciu witryny Azure Portal.
Zaloguj się w witrynie Azure Portal.
Wybierz pozycję Bazy danych SQL z menu po lewej stronie, a następnie wybierz bazę danych na stronie Bazy danych SQL.
Wybierz pozycję Parametry połączenia w obszarze Ustawienia i skopiuj pełną ADO.NET parametry połączenia. W przypadku usługi Azure SQL Managed Instance skopiuj parametry połączenia dla publicznego punktu końcowego.
Ustawianie parametrów połączenia
Aplikacja funkcji obsługuje wykonywanie funkcji na platformie Azure. Najlepszym rozwiązaniem w zakresie zabezpieczeń jest przechowywanie parametry połączenia i innych wpisów tajnych w ustawieniach aplikacji funkcji. Korzystanie z ustawień aplikacji uniemożliwia przypadkowe ujawnienie parametry połączenia z kodem. Dostęp do ustawień aplikacji funkcji można uzyskać bezpośrednio z poziomu programu Visual Studio.
Musisz wcześniej opublikować aplikację na platformie Azure. Jeśli jeszcze tego nie zrobiono, opublikuj aplikację funkcji na platformie Azure.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji funkcji i wybierz polecenie Publikuj.
Na stronie Publikowanie wybierz wielokropek (
...
) w obszarze Hosting, a następnie wybierz pozycję Zarządzaj ustawieniami usługi aplikacja systemu Azure.W obszarze Ustawienia aplikacji wybierz pozycję Dodaj ustawienie, w polu Nazwa nowego ustawienia aplikacji wpisz
sqldb_connection
, a następnie wybierz przycisk OK.W nowym ustawieniu sqldb_connection wklej parametry połączenia skopiowaną 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.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 wymagana do nawiązania połączenia z usługą SQL Database.
Otwórz projekt lokalnej aplikacji funkcji w programie Visual Studio 2022.
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji funkcji i wybierz polecenie Zarządzaj pakietami NuGet.
Na karcie Przeglądaj wyszukaj pozycję
Microsoft.Data.SqlClient
i po znalezieniu wybierz ją.Na stronie Microsoft.Data.SqlClient wybierz wersję
5.1.0
, a następnie kliknij przycisk Zainstaluj.Po zakończeniu instalacji przejrzyj zmiany, a następnie kliknij przycisk OK, aby zamknąć okno Podgląd.
W przypadku wyświetlenia okna Akceptacja licencji kliknij przycisk Akceptuję.
Teraz możesz dodać kod funkcji języka C#, który łączy się z usługą SQL Database.
Dodawanie funkcji wyzwalanej czasomierzem
W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt aplikacji funkcji i wybierz polecenie Dodaj>nową funkcję platformy Azure.
Po wybraniu szablonu usługi Azure Functions nazwij nowy element podobny
DatabaseCleanup.cs
do i wybierz pozycję Dodaj.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.
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;
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 usługi Azure Functions.Naciśnij F5 , aby uruchomić aplikację funkcji. Zostanie otwarte okno wykonywania narzędzi Azure Functions Core Tools za programem Visual Studio.
Po 15 sekundach po uruchomieniu funkcja jest uruchamiana. Obejrzyj dane wyjściowe i zanotuj liczbę wierszy zaktualizowanych w tabeli SalesOrderHeader .
W pierwszym wykonaniu należy zaktualizować 32 wiersze danych. Poniższe przebiegi nie aktualizują żadnych wierszy 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 usługi Azure SQL Database lub Azure SQL Managed Instance. Aby uzyskać więcej informacji, zobacz jeden z następujących linków na podstawie typu usługi 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:
-
Dokumentacja usługi Azure Functions dla deweloperów
Dokumentacja dla programistów dotycząca kodowania funkcji oraz definiowania wyzwalaczy i powiązań. -
Testowanie usługi Azure Functions
Opis różnych narzędzi i technik testowania funkcji.