In Microsoft SQL server zijn er SQL Server Agent Jobs om, op bepaalde tijden, geautomatiseerd taken te laten uitvoeren door de database. Dit is super handig en maakt de database een enorm krachtige tool.
In Azure SQL Database bestaat zoiets ook, maar wel net even anders:
In Azure kan je Elastic Jobs aanmaken. En je betaalt alleen voor de jobdatabase, niet voor de afzonderlijke jobs. Dit betekent dat bij veel terugkerende datataken, het voordelig kan zijn om deze door verschillende Elastic Jobs te laten uitvoeren.
Table of Contents
De JobDatabase
Voor het aanmaken van een Azure Elastic Job is een ‘Job Database’ nodig. Deze database bevat een aantal objecten die door Azure worden aangemaakt. Je kan het beste een lege database gebruiken. Het moet een database in de S0 Tier of hoger zijn.
De target databases
Elke Elastic Job wordt uitgevoerd op databases die lid zijn van een bepaalde ‘targetgroup’. Je kunt hier losse databases, of clusters en servers aan toevoegen. Het is niet nodig dat de job database en de target databases in dezelfde omgeving of zelfs tenant staan. De elastic job agent logt in, in de target databases en voert daar de jobcode uit. Het is dus wel nodig om in alle targetdatabases een login en user aan te maken met voldoende rechten voor het uitvoeren van de job.
Job definitie
Een job wordt aangemaakt door voorgedefinieerde stored procedures aan te roepen op de jobdatabase. Door parameters mee te geven aan deze stored procedures definieer je de job, de afzonderlijke stappen in de job en het executieplan.
Je kunt jobs éénmalig / handmatig uitvoeren, maar je kan ook een schedule meegeven. Elastic Jobs kunnen op de ‘snelste’ stand elke minuut worden uitgevoerd. Als een job al / nog loopt skipt de volgende automatisch.
Je kunt Jobs overigens ook definiëren met commando’s in Powershell. Dit gebruik ik zelf niet veel, omdat ik toch al in een SQL omgeving werk, maar het is wel mogelijk. Microsoft geeft in zijn documentatie beide manieren weer.
Logging
De Elastic Jobs in Azure hebben standaard een zeer uitgebreide logging, deze wordt bijgehouden in de jobdatabase. Ook error messages die optreden bij het uitvoeren van de jobs worden hierin vastgelegd. De Jobdatabase met de execution logs van de Job agents kun je weer mooi in een Power BI rapport uitlezen :).
Hoe dan?
Microsoft heeft zeer uitgebreide pagina’s met uitleg hoe je een Elastic Job maakt:
Elastic Database Jobs (preview) – Azure SQL Database | Microsoft Docs
Taken voor Elastic Database (preview) – Azure SQL Database | Microsoft Docs