Elastische taken verkennen

Voltooid

Een van de redenen waarom veel DBA's zo vertrouwd raakten met Azure Automation, is dat Azure SQL Database aanvankelijk geen mogelijkheden had voor geplande taken.

Met de functie Elastische taken kunt u een set T-SQL-scripts uitvoeren op een verzameling servers of databases als een eenmalige taak of met behulp van een gedefinieerd schema. Elastische taken werken op dezelfde manier als SQL Server Agent-taken, behalve dat ze beperkt zijn tot het uitvoeren van T-SQL. De taken werken in alle lagen van Azure SQL Database. SQL Agent-taken worden nog steeds gebruikt voor taakautomatisering in SQL Server en zijn ook opgenomen in Azure SQL Managed Instances.

Screenshot of the elastic job architecture diagram.

Als u Elastische taken wilt configureren, hebt u een taakagent en database nodig die is toegewezen aan het beheren van uw taken. De aanbevolen servicelaag voor de taakdatabase is S1 of hoger en de optimale servicelaag is afhankelijk van het aantal taken dat u uitvoert en de frequentie van deze taken.

Laten we de onderdelen van elastische taken bekijken:

  • Elastische-taakagent : uw Azure-resource voor het uitvoeren en beheren van taken.
  • Taakdatabase : een database die is toegewezen aan het beheren van uw taken.
  • Doelgroep : een verzameling servers, elastische pools en individuele databases waarin een taak wordt uitgevoerd.
  • Taak : een of meer T-SQL-scripts die een taakstap opstellen.

Als een server of elastische pool het doel is, moet er een referentie in de hoofddatabase van de server of pool worden gemaakt, zodat de taakagent de databases binnen kan inventariseren. Voor één database is een databasereferentie alles wat nodig is. Referenties moeten slechts de minimale bevoegdheden hebben die nodig zijn om de taakstap uit te voeren.

Screenshot of the elastic job agent creation page.

U kunt een elastische taakagent maken via Azure Portal. Zorg ervoor dat u op de pagina Elastische taakagent een naam opgeeft voor uw agent en geef een SQL-database op voor uw taakdatabase.

U kunt een doelgroep maken met behulp van PowerShell of T-SQL. Met het volgende codefragment maakt u de MyServerGroup-doelgroep , inclusief alle databases die op het moment van uitvoering op de server aanwezig zijn. Bij deze codefragment wordt ervan uitgegaan dat de variabele $jobAgent en de variabele $targetServerName eerder zijn opgegeven.

# create MyServerGroup target group
$serverGroup = $jobAgent | New-AzSqlElasticJobTargetGroup -Name 'MyServerGroup'

$serverGroup | Add-AzSqlElasticJobTarget -ServerName $targetServerName -RefreshCredentialName $masterCred.CredentialName

Met de onderstaande code maakt u een elastische taak en voegt u taakstappen toe met behulp van PowerShell. Stap1 is verantwoordelijk voor het maken van de tabel MyTable als deze bestaat.

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

Zoals we hierboven kunnen zien, moeten T-SQL-scripts die worden uitgevoerd door elastische taken idempotent zijn. Dit betekent dat als de taak meerdere keren wordt uitgevoerd, ongeacht of deze per ongeluk of vanwege een taakfout wordt uitgevoerd, de taak niet mislukt of onbedoelde resultaten oplevert. U moet hetzelfde script meerdere keren zonder fouten kunnen uitvoeren.

Voer ten slotte de elastische taak MyFirstElasticJob uit met behulp van PowerShell.

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

Use-casescenario's

Elastische taken kunnen worden gebruikt in de volgende scenario's:

  • Beheertaken automatiseren om te worden uitgevoerd volgens een specifieke planning
  • Schemawijzigingen implementeren
  • Gegevensverplaatsingen
  • Gegevens verzamelen en aggregeren voor rapportage of andere doeleinden
  • Gegevens laden vanuit Azure-blobopslag
  • Taken configureren voor uitvoering in een verzameling databases op terugkerende basis, zoals tijdens daluren
  • Gegevensverwerking via een groot aantal databases, bijvoorbeeld telemetrieverzameling. De resultaten worden vervolgens gecompileerd in één doeltabel voor verdere analyse.