SQL Server audit-trail zonder code in uw applicaties
DatabaseExplorer: www.databaseexplorer.nl • 12 juni, 2026 • Auteur: Teus van Arkel
Verwerkt uw organisatie persoonsgegevens? Dan is het niet genoeg om te weten dát gegevens zijn gewijzigd. Voor audits, incidentonderzoek en AVG-verantwoording moet u ook kunnen aantonen wie een wijziging heeft uitgevoerd, wanneer dat gebeurde, welke gegevens precies zijn aangepast en met welke applicatie.

Geen code in uw applicaties. Gebruikt u de DatabaseExplorer, dan hoeft er in de verschillende applicaties die dezelfde database gebruiken geen enkele regel code geschreven te worden om audit-gegevens vast te leggen. De audit gebeurt op databaseniveau en alles wordt door de DatabaseExplorer geregeld.
Binnen Microsoft SQL Server is die informatie beschikbaar, maar niet op één plek. In dit artikel laten we zien hoe u SQL Server Audit, Change Data Capture (CDC) en Extended Events combineert, waar u op moet letten en hoe de DatabaseExplorer dit voor u automatiseert.
Drie bronnen, drie perspectieven
SQL Server Audit, Change Data Capture (CDC) en Extended Events leggen verschillende soorten informatie vast. Geen van de drie geeft op zichzelf altijd het volledige beeld.
| Bron | Wat wordt vastgelegd? | Waar moet u rekening mee houden? |
|---|---|---|
| SQL Server Audit | Uitgevoerde acties, zoals INSERT, UPDATE, DELETE en, als u die configureert, SELECT. Auditrecords kunnen ook context bevatten, zoals de gebruikte database-login en de applicatienaam. | Audit registreert de acties die u configureert, maar levert niet vanzelf een overzicht van de oude en nieuwe waarden per record. Een gedeelde database-login vertelt bovendien niet automatisch welke persoon de actie uitvoerde. |
| Change Data Capture (CDC) | Wijzigingen aan ingeschakelde tabellen en de vastgelegde kolomwaarden. Bij updates kan CDC zowel de oude als de nieuwe waarden beschikbaar maken. | CDC registreert de gewijzigde data, maar niet vanzelf wie de wijziging uitvoerde of vanuit welke applicatie. U moet ook bepalen welke tabellen en kolommen worden gevolgd en hoe lang de CDC-gegevens worden bewaard. |
| Extended Events | Geselecteerde SQL Server-gebeurtenissen en bijbehorende gegevens, afhankelijk van de ingerichte sessie. | Extended Events is flexibel, maar legt alleen vast wat u configureert. Het is geen automatische registratie van alle wijzigingen op recordniveau. |
Samen kunnen deze bronnen helpen om te bepalen welke actie plaatsvond, welke gegevens veranderden en welke context daarbij beschikbaar was. Hoe volledig dat beeld is, hangt af van de configuratie en van de manier waarop de applicaties en databasegebruikers zich identificeren. CDC registreert bijvoorbeeld wijzigingsgegevens, terwijl SQL Server Audit acties kan vastleggen.
Meer lezen bij Microsoft: Change Data Capture · SQL Server Audit-acties
Aan de slag met T-SQL
U configureert deze onderdelen het handigst met het bekende T-SQL. Zo zet u SQL Server Audit aan:
USE master;
GO
CREATE SERVER AUDIT AuditNaarBestand
TO FILE
(
FILEPATH = 'D:\SqlAudit\',
MAXSIZE = 1 GB,
MAX_ROLLOVER_FILES = 20,
RESERVE_DISK_SPACE = OFF
);
GO
ALTER SERVER AUDIT AuditNaarBestand
WITH (STATE = ON);
GO
Een audit legt pas iets vast als u ook aangeeft wat er gelogd moet worden, met een audit-specificatie. Bijvoorbeeld voor
alle wijzigingen in het schema dbo:
USE MijnDatabase;
GO
CREATE DATABASE AUDIT SPECIFICATION AuditPersoonsgegevens
FOR SERVER AUDIT AuditNaarBestand
ADD (INSERT, UPDATE, DELETE ON SCHEMA::dbo BY public)
WITH (STATE = ON);
GO
CDC en Extended Events zijn ook via T-SQL aan te zetten. Extended Events logt daarbij naar een bestand en CDC naar een tabel in SQL Server.
De valkuil: opruimen en bewaartermijnen
Zodra u deze onderdelen aanzet, krijgt u te maken met opruimen. Dat is een onderschat onderwerp:
- Schijfruimte: audit- en Extended Events-bestanden groeien door. U wilt niet dat de schijf van uw SQL Server volloopt.
- Databasegroei: CDC schrijft elke mutatie naar een tabel. Op een drukke database wordt die tabel snel enorm.
- Opschoonjobs: die moet u inrichten, en ze moeten op hun beurt weer worden bewaakt.
Bewaartermijnen
Voor auditbestanden, CDC-gegevens en Extended Events-bestanden moet u vooraf bepalen hoe lang de gegevens nodig zijn en hoe u ze daarna verwijdert. Er is geen algemene bewaartermijn die voor iedere organisatie en elk type auditgegeven geldt. Bepaal de termijn op basis van het doel van de registratie, uw interne beleid en de toepasselijke wet- en regelgeving. De AVG vereist dat persoonsgegevens niet langer worden bewaard dan noodzakelijk.
Let op de instellingen van SQL Server
Met MAX_ROLLOVER_FILES kan SQL Server het oudste auditbestand verwijderen wanneer de limiet wordt geëvalueerd, bijvoorbeeld
wanneer een nieuw bestand nodig is. Controleer daarom of deze instelling past bij uw bewaarbeleid en of gegevens die u langer
nodig hebt, tijdig naar een geschikte opslaglocatie worden overgebracht.
Meer lezen bij Microsoft: CREATE SERVER AUDIT (MAX_ROLLOVER_FILES)
Waarom een centrale audit-database?
Om deze redenen, en vanwege de leesbaarheid van de logging en de verantwoordingsplicht uit de AVG (u moet kunnen rapporteren over gemuteerde gegevens), kiezen organisaties er vaak voor om alle bronnen in te lezen in een centrale audit-database:
- de audit-bestanden;
- de CDC-tabel;
- de Extended Events-bestanden.
Zo combineert u de data tot één datamodel met alle mutaties per entiteit, en maakt u eenvoudig maatwerkrapportages.
Dat vraagt wel om een aantal processen die dagelijks moeten draaien:
- Audit-bestanden inlezen, en bijhouden welke records al zijn ingelezen.
- De CDC-tabel inlezen.
- Extended Events-bestanden inlezen, en bijhouden welke records al zijn gelezen.
- De CDC-tabel opschonen.
En het inlezen zelf is niet eenvoudig. U moet analyseren welke velden nodig zijn in de centrale audit-tabel, voor zowel de Audit- en Extended Events-bestanden als de CDC-records. Daarna moeten de gegevens op de juiste identificerende velden aan elkaar gekoppeld worden. Als dit allemaal goed draait, heeft u een audit-mechanisme waarop u betrouwbare rapportages kunt draaien.
Hoe de DatabaseExplorer dit oplost
Dit alles hebben wij generiek opgezet in de DatabaseExplorer. En het belangrijkste: in uw applicaties hoeft geen code geschreven of aangepast te worden. Het maakt niet uit hoeveel applicaties dezelfde database gebruiken. Omdat de audit op databaseniveau gebeurt en de DatabaseExplorer alles regelt, hoeft geen van die applicaties zelf iets vast te leggen. Bij een verbinding met een database zet u één vinkje aan om aan te geven dat de audit-gegevens ingelezen mogen worden. Daarna gebeurt alles automatisch:
- Audit, CDC en Extended Events worden geconfigureerd.
- Audit, CDC en Extended Events worden ingelezen in een centrale tabel.
- De CDC-tabel wordt opgeschoond.
- De gegevens worden gecombineerd tot één record met de Wie, Wanneer, Wat en Waarmee: wie heeft wanneer wat gewijzigd, en met welke applicatie.
Dat combineren we met een overzichtelijke gebruikersinterface. U bladert door databases en tabellen en bekijkt op recordniveau wie wat wanneer heeft gewijzigd en waarmee. Zo helpt de DatabaseExplorer u bij de verantwoording die de AVG van u vraagt: u kunt desgevraagd aantonen welke personen privacygevoelige tabellen hebben ingezien of gewijzigd, zonder handmatige SQL-scripts.
Van audit naar actie: meting, melding, maatregel
De DatabaseExplorer leest met de audit-data ook gegevens in die voor de AVG belangrijk zijn, zoals mislukte logins op de database. Daar kunt u maatwerkrapportages op bouwen, of u gebruikt ze in het meting-melding-maatregel-systeem:
- Meting: de audit-gegevens worden ingelezen.
- Melding: de DatabaseExplorer meldt dit binnen de applicatie aan de juiste personen, met een historie van de acties op de melding.
- Maatregel: bij bepaalde waarden kan er automatisch worden geëscaleerd naar externe systemen, bijvoorbeeld via e-mail of een ander geautomatiseerd berichtensysteem.
Werkt dit ook voor uw databases?
Wilt u weten hoeveel werk het kost om auditregistratie toe te voegen aan uw bestaande SQL Server-omgeving? In veel gevallen kan DatabaseExplorer auditgegevens verzamelen zonder aanpassingen aan bestaande applicaties. Neem contact op voor een korte inventarisatie van uw omgeving.