Automatizace databázových úloh pro zajištění škálovatelnosti

Dokončeno

Při práci s automatizací z SQL Serveru je běžné používat agenta SQL k plánování úloh pro účely automatizace. I když azure SQL Managed Instance a SQL Server spuštěné na virtuálním počítači Azure tuto možnost stále mají, Azure SQL Database tuto možnost nemá, takže možná budete muset k dosažení podobných výsledků použít alternativní metody automatizace.

Azure Automation

Azure Automation umožňuje automatizaci procesů, správu konfigurací, úplnou integraci s možnostmi platformy Azure, jako je řízení přístupu na základě role a ID Microsoft Entra, a může spravovat prostředky Azure a místní prostředky.

Pomocí služby Azure Automation můžete snadno řídit prostředky v Azure i na místních virtuálních počítačích. Pomocí hybridních runbooků můžete například automatizovat úlohy, jako je spuštění virtuálního počítače, spuštění zálohování SQL Serveru a vypnutí virtuálního počítače, což z něj dělá nákladově efektivní a efektivní.

Dalším běžným scénářem je použití služby Azure Automation pro pravidelné operace údržby, jako je vymazání zastaralých nebo starých dat nebo přeindexování databáze SQL.

Komponenty

Azure Automation podporuje aktivity automatizace i správy konfigurace. Zaměříme se na automatizační komponenty, ale ke správě aktualizací a konfigurací serverů můžete použít také Azure Automation.

Komponenta Popis
Runbook Runbooky jsou jednotkou provádění ve službě Azure Automation. Runbooky jsou definovány jako jeden ze tří typů: grafický runbook založený na PowerShellu, skriptu PowerShellu nebo skriptu Pythonu. Runbooky PowerShellu se nejčastěji používají ke správě prostředků Azure SQL.
Modul Azure Automation definuje kontext spuštění pro kód PowerShellu nebo Pythonu, který spouštíte v runbooku. Abyste mohli spustit kód, musíte importovat podpůrné moduly. Pokud byste například potřebovali spustit rutinu PowerShellu Get-AzSqlDatabase , museli byste modul PowerShellu naimportovat Az.SQL do svého účtu Automation.
Pověření Přihlašovací údaje ukládají citlivé informace, které můžou runbooky nebo konfigurace používat za běhu.
Plán Plány jsou propojené s runbooky a aktivují runbooky v určitém čase.

Další informace o příkazech Azure CLI a PowerShellu, které jsou k dispozici pro správu prostředků Azure SQL Database a Azure SQL Managed Instance, najdete na následujících odkazech: Modul PowerShellu pro Azure SQL a Azure CLI pro Azure SQL.

Elastické úlohy

Jedním z důvodů, proč se mnoho databázových autorit seznámilo se službou Azure Automation, je, že azure SQL Database zpočátku nezískal možnosti pro naplánované úlohy.

Toto omezení znamenalo, že dbA musely najít alternativní řešení pro efektivní zpracování těchto základních úloh. Azure Automation se v tomto scénáři stal cenným nástrojem, který nabízí prostředky pro vytváření a správu plánovaných úloh, automatizaci procesů migrace databází a provádění běžných úloh údržby.

Architektura

Funkce elastických úloh umožňuje spouštět sadu skriptů T-SQL pro kolekci serverů nebo databází jako jednorázovou úlohu nebo pomocí definovaného plánu. Elastické úlohy fungují podobně jako úlohy agenta SQL Serveru s tím rozdílem, že jsou omezené na spouštění T-SQL. Úlohy fungují ve všech úrovních služby Azure SQL Database.

Screenshot of the elastic job architecture diagram.

Ke konfiguraci elastických úloh potřebujete agenta úloh a databázi vyhrazenou ke správě úloh. Doporučená úroveň služby pro databázi úloh je S1 nebo vyšší a optimální úroveň služby bude záviset na počtu spuštěných úloh a četnosti těchto úloh.

Pojďme se podívat na komponenty elastických úloh:

  • Agent elastických úloh – prostředek Azure pro spouštění a správu úloh
  • Databáze úloh – databáze vyhrazená ke správě úloh.
  • Cílová skupina – kolekce serverů, elastických fondů a jednoúčelových databází, ve kterých bude úloha spuštěna.
  • Úloha – jeden nebo více skriptů T-SQL, které tvoří krok úlohy

Pokud je cílem server nebo elastický fond, měly by se vytvořit přihlašovací údaje v hlavní databázi serveru nebo fondu, aby agent úloh mohl vytvořit výčet databází v rámci. Pro jednu databázi je potřeba přihlašovací údaje databáze. Přihlašovací údaje by měly mít nejnižší úroveň oprávnění nezbytnou k provedení daného kroku úlohy.

Screenshot of the elastic job agent creation page.

Agenta elastických úloh můžete vytvořit prostřednictvím webu Azure Portal. Na stránce agenta elastických úloh nezapomeňte zadat název vašeho agenta a zadat databázi SQL pro vaši databázi úloh.

Následující skript PowerShellu vytvoří elastickou úlohu s názvem MyFirstElasticJob , přidá do ní krok úlohy a spustí příkaz SQL, který vytvoří tabulku, pokud v databázi neexistuje.

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

Nakonec spusťte elastickou úlohu MyFirstElasticJob .

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

Scénáře použití

Elastické úlohy je možné použít v následujících scénářích:

  • Automatizujte úlohy správy, které se mají spouštět podle určitého plánu.
  • Nasaďte změny schématu.
  • Přesuny dat.
  • Shromážděte a agregujte data pro účely vytváření sestav nebo jiných účelů.
  • Načtěte data ze služby Azure Blob Storage.
  • Konfigurace spouštění úloh pro kolekci databází nebo jejich opakovaného spouštění, například v době mimo špičku.
  • Zpracování dat přes velký počet databází, například shromažďování telemetrických dat. Výsledky se pak zkompilují do jedné cílové tabulky pro další analýzu.

Migrace úloh agenta SQL do elastických úloh

I když je možné vytvořit vlastní skripty pro migraci úloh agenta SQL na elastické úlohy, je k dispozici pohodlnější možnost. Existuje skript ke stažení, který usnadňuje kopírování existujících úloh agenta SQL do elastických úloh.

Skript je nástroj, který automatizuje proces převodu těchto úloh, což vám ušetří čas a úsilí, abyste je museli ručně znovu vytvořit v novém prostředí.

Soubor je zazipovaná složka, která obsahuje skript a přidruženou dokumentaci. Pokud ho chcete použít, stáhněte si soubor a postupujte podle pokynů.

Po zadání všech parametrů uvedených v pokynech se zobrazí seznam úloh. Skript pak vytvoří každou úlohu jednotlivě v zakázaném stavu za předpokladu, že ještě neexistuje. Po vytvoření úlohy se kroky přidají se stejnými ID, textem příkazu, pokusy o opakování a sekundami počátečního intervalu opakování. Databáze propojená s krokem úlohy bude cílovou skupinou. Pokud cílová skupina neexistuje, vytvoří se automaticky. Kopie neobsahuje plány, výstrahy a oznámení.

Migrace úloh agenta SQL do agenta SQL v Azure

Migrace úloh z místního SQL Serveru na spravovanou instanci Azure SQL nebo SQL Server běžící na virtuálním počítači se řídí procesem, který by měl být pro většinu databázových autorit známý.

Předpokládejme, že jsme v našem scénáři migrovali místní SQL Server do azure SQL Managed Instance. Potřebujeme migrovat a upravit několik úloh agenta SQL, aby fungovaly bezproblémově v prostředí Azure.

  • Posouzení závislostí: Identifikujte úlohu agenta SQL, kterou chcete migrovat. Uveďte všechny závislosti, jako jsou propojené servery, přihlašovací údaje a databáze, na které úloha spoléhá.

  • Skriptujte úlohu agenta SQL: Skriptujte úlohu agenta SQL na SQL Serveru jako skript SQL. Můžete to provést tak, že kliknete pravým tlačítkem myši na úlohu v aplikaci SQL Server Management Studio (SSMS) a vyberete "Úloha skriptu jako" -> "CREATE To" -> "New Editor Power Query Window" (Nová Editor Power Query okno).

  • Upravit závislosti úloh: Zkontrolujte skript SQL a upravte všechny závislosti úloh, které se mohly změnit kvůli migraci. Pokud například úloha odkazuje na propojený server nebo cestu k souboru na místním serveru, aktualizujte ji tak, aby odpovídala novému prostředí.

  • Vytvoření úlohy Azure SQL MI: Otevřete SSMS nebo Azure Data Studio a připojte se ke službě Azure SQL Managed Instance. Vytvořte novou úlohu agenta SQL pomocí dříve vygenerovaného skriptu.

  • Vytváření závislostí v Azure SQL MI: Pokud vaše úloha agenta SQL spoléhá na propojené servery nebo přihlašovací údaje, vytvořte je v prostředí Azure SQL MI. Ujistěte se, že odpovídají konfiguraci z místního SQL Serveru.

  • Naplánujte úlohu: Nastavte plán úloh v Azure SQL MI pomocí agenta SQL Serveru. Můžete vytvořit nový plán a propojit ho s úlohou.

  • Testování: Důkladně otestujte úlohu agenta SQL v prostředí Azure SQL MI, abyste zajistili, že běží podle očekávání. Zkontrolujte případné chyby nebo problémy, ke kterým může dojít kvůli rozdílům mezi místním SQL Serverem a Azure SQL MI.

  • Monitorování a údržba: Monitorujte výkon úlohy a ujistěte se, že splňuje vaše požadavky v prostředí Azure SQL MI. Podle potřeby upravte všechny konfigurace nebo plány.