Automatisatie van Taken
1. SQL Server Agent
SQL Server Agent is de centrale service voor het automatiseren van beheertaken. Elke SQL Server instantie heeft er één. Alles wat je meer dan een paar keer moet doen, kan je hier automatiseren.
Componenten
| Component | Beschrijving |
|---|---|
| SQL Server service (MSSQLSERVER) | De database-engine zelf |
| Windows Application Log | Logt systeemgebeurtenissen; SQL Server Agent leest dit |
| SQL Server Agent service | Voert geautomatiseerde taken uit, reageert op events |
Wat SQL Server Agent kan automatiseren
- Jobs — bevatten stappen, schema's, waarschuwingen en meldingen
- Alerts — bewaken gebeurtenissen en kunnen meldingen verzenden of taken uitvoeren
- Operators — groepen of individuen die meldingen kunnen ontvangen
- Multi-server environments — beheer van meerdere SQL-instanties vanuit één master instance (via Master & Target-servers)
2. Operators
Een operator is een groep of individu die meldingen kan ontvangen (via e-mail of pager).
Object Explorer → SQL Server Agent → rechtermuisklik op Operators → New Operator...
Stel in: - Naam + e-mailadres - Pager-schema (werkdagen + tijdsvenster) - Notificaties: voor welke alerts
3. Alerts
Een alert reageert op een event in het Windows Application Log of een performantieconditie.
- SQL Server Agent leest het Windows Application Log en vergelijkt met gedefinieerde alerts
- Bij match → alert wordt geactiveerd
Alerts reageren op: - Mogelijke problemen (transaction log vol, disk space, ...) - Systeem errors - Door de gebruiker gedefinieerde errors
Object Explorer → SQL Server Agent → rechtermuisklik op Alerts → New Alert...
Tabbladen: - General — naam, type, object, counter, conditie - Response — job uitvoeren en/of operator notificeren - Options — e-mail/pager insluiten, vertraging tussen responses
USE [msdb];
GO
EXEC msdb.dbo.sp_add_alert
@name = N'TEMPDB Growing',
@enabled = 1,
@delay_between_responses = 120,
@include_event_description_in = 1,
@performance_condition = N'Databases|Data File(s) Size (KB)|Employees|>|0';
GO
EXEC msdb.dbo.sp_add_notification
@alert_name = N'TEMPDB Growing',
@operator_name = N'Marcel Kiekeboe',
@notification_method = 1;
GO
4. Jobs
Een job is een reeks stappen die SQL Server Agent uitvoert.
Job aanmaken (via SSMS)
Object Explorer → SQL Server Agent → rechtermuisklik op Jobs → New Job...
Tabbladen:
| Tabblad | Inhoud |
|---|---|
| General | Naam, eigenaar, categorie, beschrijving |
| Steps | Stappen toevoegen — elke stap heeft een type (T-SQL, CmdExec, ...), database en commando; op success/failure volgende stap of stoppen |
| Schedules | Wanneer de job uitgevoerd wordt (eenmalig, terugkerend, bij opstart) |
| Alerts | Koppelen van alerts aan de job |
| Notifications | Operator verwittigen + actie bij voltooiing |
| Targets | Lokale server of target-servers (multi-server) |
Job step types
| Type | Gebruik |
|---|---|
| Transact-SQL script (T-SQL) | SQL statements uitvoeren |
| Operating System (CmdExec) | OS-commando's uitvoeren |
| Een applicatie opstarten | Externe applicatie uitvoeren |
Schedule opties
- Eenmalig op specifiek tijdstip
- Terugkerend (dagelijks, wekelijks, elk uur, elke minuut, ...)
- Bij opstart van de SQL Server Agent
5. Job History Log
Taakactiviteiten worden opgeslagen in sysjobhistory in de msdb systeemdatabase.
| Veld | Beschrijving |
|---|---|
| Datum en tijdstip | Wanneer de stap plaatsvond |
| Succes/Fout | Of de stap geslaagd is |
| Operators | Wie genotificeerd is |
| Duurtijd | Hoe lang de stap duurde |
| Foutberichten | Eventuele foutomschrijving |
- Max. 1000 rijen in het logboek
- Max. 100 rijen per job
Via SSMS: rechtermuisklik op job → View History → Log File Viewer
6. Automatisatie van Administratieve Taken
Taken die vaak worden uitgevoerd en daarom kunnen worden geautomatiseerd via SQL Server Agent jobs:
- Maken van backups van databases & transaction log
- Overzetten van data
- Indexen herberekenen
- Data integriteit controleren
- Databases verkleinen
7. Database Mail
Database Mail laat SQL Server toe om zelf e-mails te sturen via SMTP — handig om operators te notificeren bij job-failures of alerts.
Kenmerken: - Berichten kunnen zoekresultaten bevatten en bestanden als bijlage - Gebruikt SMTP (Simple Mail Transfer Protocol) - Vereist lidmaatschap van de databaserol DatabaseMailUserRole in msdb - Bewaart verboden bestandsextensies (configureerbaar) - Bewaart kopieën van berichten en bijlagen in msdb
Configuratie (via SSMS)
Object Explorer → Management → rechtermuisklik op Database Mail → Configure Database Mail
Stappen wizard: 1. SMTP-account aanmaken (naam, e-mailadres, display name, SMTP server + poort, authenticatie) 2. Mail-profiel aanmaken en SMTP-account(s) koppelen 3. Profile security instellen (public/private) 4. System parameters configureren (retry attempts, max file size, ...)
Database Mail testen
Object Explorer → Management → rechtermuisklik op Database Mail → Send Test E-Mail...
8. Multi-Server Environments
Via SQL Server Agent kunnen taken beheerd worden over meerdere SQL-instanties:
- Master server — beheert en distribueert jobs
- Target servers — ontvangen en voeren jobs uit
Hierdoor kan een DBA vanuit één centrale instantie jobs uitrollen naar alle target-servers.