Automatyzowanie zadań bazy danych pod kątem skalowalności

Ukończone

Podczas pracy z automatyzacją z programu SQL Server często używa się agenta SQL do planowania zadań na potrzeby automatyzacji. Mimo że usługa Azure SQL Managed Instance i program SQL Server uruchomione na maszynie wirtualnej platformy Azure nadal mają tę opcję, usługa Azure SQL Database nie, dlatego może być konieczne użycie alternatywnych metod automatyzacji w celu uzyskania podobnych wyników.

Azure Automation

Usługa Azure Automation umożliwia automatyzację procesów, zarządzanie konfiguracją, pełną integrację z opcjami platformy Azure, takimi jak kontrola dostępu oparta na rolach i identyfikator entra firmy Microsoft, oraz zarządzanie zasobami platformy Azure i zasobami lokalnymi.

Dzięki usłudze Azure Automation można łatwo kontrolować zasoby zarówno na platformie Azure, jak i na lokalnych maszynach wirtualnych. Możesz na przykład użyć hybrydowych elementów Runbook do automatyzowania zadań, takich jak uruchamianie maszyny wirtualnej, uruchamianie kopii zapasowej programu SQL Server i zamykanie maszyny wirtualnej, co czyni ją opłacalną i wydajną.

Innym typowym scenariuszem jest użycie usługi Azure Automation do okresowych operacji konserwacji, takich jak przeczyszczanie nieaktualnych lub starych danych lub ponowne indeksowanie bazy danych SQL.

Składniki

Usługa Azure Automation obsługuje działania automatyzacji i zarządzania konfiguracją. Skupimy się na składnikach automatyzacji, ale możesz również użyć usługi Azure Automation do zarządzania aktualizacjami i konfiguracjami serwera.

Składnik opis
Runbook Elementy Runbook to jednostka wykonywania w usłudze Azure Automation. Elementy Runbook są definiowane jako jeden z trzech typów: graficzny element Runbook oparty na programie PowerShell, skrypt programu PowerShell lub skrypt języka Python. Elementy Runbook programu PowerShell są najczęściej używane do zarządzania zasobami usługi Azure SQL.
Moduł Usługa Azure Automation definiuje kontekst wykonywania dla programu PowerShell lub kodu języka Python, który wykonujesz w elemecie Runbook. Aby wykonać kod, należy zaimportować moduły pomocnicze. Jeśli na przykład musisz uruchomić Get-AzSqlDatabase polecenie cmdlet programu PowerShell, musisz zaimportować Az.SQL moduł Programu PowerShell do konta usługi Automation.
Poświadczeń Poświadczenia przechowują poufne informacje, których mogą używać elementy Runbook lub konfiguracje w czasie wykonywania.
Zaplanuj Harmonogramy są połączone z elementami Runbook i wyzwalają element Runbook w określonym czasie.

Aby dowiedzieć się więcej na temat poleceń interfejsu wiersza polecenia platformy Azure i programu PowerShell dostępnych do zarządzania zasobami usługi Azure SQL Database i usługi Azure SQL Managed Instance, zapoznaj się z następującymi linkami: moduł programu PowerShell dla usług Azure SQL i interfejsu wiersza polecenia platformy Azure dla usługi Azure SQL.

Zadania elastyczne

Jednym z powodów, dla których wiele baz danych zaznajomiło się z usługą Azure Automation, jest to, że usługa Azure SQL Database początkowo nie ma możliwości zaplanowanych zadań.

To ograniczenie oznaczało, że administratorzy baz danych musieli znaleźć alternatywne rozwiązania do wydajnego obsługi tych podstawowych zadań. Usługa Azure Automation pojawiła się jako cenne narzędzie w tym scenariuszu, oferując środki do tworzenia zaplanowanych zadań i zarządzania nimi, automatyzowania procesów migracji bazy danych i wykonywania rutynowych zadań konserwacji.

Architektura

Funkcja zadań elastycznych umożliwia uruchamianie zestawu skryptów języka T-SQL względem kolekcji serwerów lub baz danych jako zadania jednorazowego lub przy użyciu zdefiniowanego harmonogramu. Zadania elastyczne działają podobnie do zadań agenta programu SQL Server, z tą różnicą, że są one ograniczone do wykonywania języka T-SQL. Zadania działają we wszystkich warstwach usługi Azure SQL Database.

Screenshot of the elastic job architecture diagram.

Aby skonfigurować zadania elastyczne, potrzebny jest agent zadań i baza danych przeznaczona do zarządzania zadaniami. Zalecana warstwa usługi dla bazy danych zadań to S1 lub wyższa, a optymalna warstwa usługi będzie zależeć od liczby wykonywanych zadań i częstotliwości tych zadań.

Przejrzyjmy składniki zadań elastycznych:

  • Agent zadań elastycznych — zasób platformy Azure do uruchamiania zadań i zarządzania nimi.
  • Baza danych zadań — baza danych przeznaczona do zarządzania zadaniami.
  • Grupa docelowa — kolekcja serwerów, pul elastycznych i pojedynczych baz danych, w których zostanie uruchomione zadanie.
  • Zadanie — co najmniej jeden skrypt języka T-SQL tworzący krok zadania.

Jeśli serwer lub pula elastyczna jest obiektem docelowym, należy utworzyć poświadczenia w bazie danych master serwera lub puli, aby agent zadania mógł wyliczać bazy danych. W przypadku pojedynczej bazy danych wymagane jest poświadczenie bazy danych. Poświadczenia powinny mieć możliwie najmniejsze uprawnienia niezbędne do wykonania kroku zadania.

Screenshot of the elastic job agent creation page.

Agent zadań elastycznych można utworzyć za pośrednictwem witryny Azure Portal. Na stronie Agent zadań elastycznych upewnij się, że podano nazwę agenta i określ bazę danych SQL dla bazy danych zadań.

Poniższy skrypt programu PowerShell tworzy zadanie elastyczne o nazwie MyFirstElasticJob dodaje do niego krok zadania i wykonuje polecenie SQL w celu utworzenia tabeli, jeśli nie istnieje w bazie danych.

Write-Output "Creating a new job..."
$jobName = "MyFirstElasticJob"
$job = $jobAgent | New-AzSqlElasticJob -Name $jobName -RunOnce

Write-Output "Creating job steps for $($jobName) job..."
$sqlText1 = "IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id('MyTable')) CREATE TABLE [dbo].[MyTable]([Id] [int] NOT NULL);"

$job | Add-AzSqlElasticJobStep -Name "Step1" -TargetGroupName $serverGroup.TargetGroupName -CredentialName $jobCred.CredentialName -CommandText $sqlText1

Na koniec uruchom zadanie elastyczne MyFirstElasticJob .

Write-Output "Start the job..."
$jobExecution = $job | Start-AzSqlElasticJob
$jobExecution

Scenariusze przypadków użycia

Zadania elastyczne mogą być używane w następujących scenariuszach:

  • Automatyzowanie zadań zarządzania do uruchamiania zgodnie z określonym harmonogramem.
  • Wdrażanie zmian schematu.
  • Przenoszenie danych.
  • Zbieranie i agregowanie danych na potrzeby raportowania lub innych celów.
  • Ładowanie danych z usługi Azure Blob Storage.
  • Konfigurowanie zadań w celu cyklicznego wykonywania w kolekcji baz danych, na przykład poza godzinami szczytu.
  • Przetwarzanie danych w dużej liczbie baz danych, na przykład zbieranie danych telemetrycznych. Wyniki są następnie kompilowane w jedną tabelę docelową w celu dalszej analizy.

Migrowanie zadań agenta SQL do zadań elastycznych

Chociaż istnieje możliwość utworzenia własnych skryptów na potrzeby migrowania zadań agenta SQL do zadań elastycznych, dostępna jest bardziej wygodna opcja. Istnieje skrypt do pobrania, który ułatwia kopiowanie istniejących zadań agenta SQL do zadań elastycznych.

Skrypt to narzędzie, które automatyzuje proces konwertowania tych zadań, co pozwala zaoszczędzić czas i nakład pracy na ręczne odtworzenie ich w nowym środowisku.

Plik jest spakowany folder zawierający skrypt i skojarzona dokumentacja. Aby go użyć, pobierz plik i postępuj zgodnie z instrukcjami.

Po wprowadzeniu wszystkich parametrów wymienionych w instrukcjach zostanie wyświetlona lista zadań. Następnie skrypt utworzy każde zadanie indywidualnie w stanie wyłączonym, zakładając, że jeszcze nie istnieje. Po utworzeniu zadania kroki są dodawane przy użyciu tych samych identyfikatorów, tekstu polecenia, ponownych prób i początkowego interwału ponawiania prób. Baza danych połączona z krokiem zadania będzie grupą docelową. Jeśli grupa docelowa nie istnieje, zostanie utworzona automatycznie. Kopia nie zawiera harmonogramów, alertów i powiadomień.

Migrowanie zadań agenta SQL do agenta SQL na platformie Azure

Migrowanie zadań z lokalnego programu SQL Server do usługi Azure SQL Managed Instance lub programu SQL Server uruchomionego na maszynie wirtualnej jest zgodne z procesem, który powinien być dobrze znany dla większości baz danych.

W naszym scenariuszu załóżmy, że przeprowadziliśmy migrację lokalnego programu SQL Server do usługi Azure SQL Managed Instance. Musimy przeprowadzić migrację i dostosować kilka zadań agenta SQL, aby bezproblemowo działały w środowisku platformy Azure.

  • Ocena zależności: zidentyfikuj zadanie agenta SQL, które chcesz zmigrować. Wyświetl listę wszystkich zależności, takich jak serwery połączone, poświadczenia i bazy danych, na których polega zadanie

  • Skrypt zadania agenta SQL: Skrypt zadania agenta SQL w programie SQL Server jako skryptu SQL. Możesz to zrobić, klikając prawym przyciskiem myszy zadanie w programie SQL Server Management Studio (SSMS) i wybierając pozycję "Zadanie skryptu jako" —> "CREATE To" —> "New Edytor Power Query Window".

  • Modyfikowanie zależności zadań: przejrzyj skrypt SQL i zmodyfikuj wszystkie zależności zadania, które mogły ulec zmianie z powodu migracji. Jeśli na przykład zadanie odwołuje się do serwera połączonego lub ścieżki pliku na serwerze lokalnym, zaktualizuj je tak, aby było zgodne z nowym środowiskiem.

  • Tworzenie zadania programu MI usługi Azure SQL: otwórz program SSMS lub narzędzie Azure Data Studio i połącz się z wystąpieniem zarządzanym usługi Azure SQL. Utwórz nowe zadanie agenta SQL przy użyciu wygenerowanego wcześniej skryptu.

  • Tworzenie zależności w usłudze Azure SQL MI: jeśli zadanie agenta SQL opiera się na połączonych serwerach lub poświadczeniach, utwórz je w środowisku wystąpienia zarządzanego usługi Azure SQL. Upewnij się, że są one zgodne z konfiguracją z lokalnego programu SQL Server.

  • Zaplanuj zadanie: skonfiguruj harmonogram zadań w usłudze Azure SQL MI przy użyciu programu SQL Server Agent. Możesz utworzyć nowy harmonogram i połączyć go z zadaniem.

  • Testowanie: dokładnie przetestuj zadanie agenta SQL w środowisku usługi Azure SQL MI, aby upewnić się, że działa zgodnie z oczekiwaniami. Sprawdź, czy występują błędy lub problemy, które mogą wystąpić z powodu różnic między lokalnym programem SQL Server i wystąpieniem mi usługi Azure SQL.

  • Monitorowanie i konserwacja: monitoruj wydajność zadania i upewnij się, że nadal spełnia wymagania w środowisku usługi Azure SQL MI. Dostosuj wszelkie konfiguracje lub harmonogramy zgodnie z potrzebami.