SQL Processen & Databases
1. SQL Process beheren
SQL Server draait als een Windows service op de achtergrond — credentials instelbaar bij installatie en achteraf. De service kan gestopt, gepauzeerd of herstart worden.
In productie
Stoppen of herstarten verbreekt alle actieve verbindingen — niet zomaar doen.
Status controleren
Ga naar services.msc en zoek naar:
| Service | Beschrijving |
|---|---|
| SQL Server (MSSQLSERVER) | Hoofdservice — databankengine |
| SQL Server Agent (MSSQLSERVER) | Jobbeheer en alerts |
| SQL Server Browser | Luistert naar verbindingsverzoeken |
| SQL Server CEIP service | Telemetrie |
| SQL Server VSS Writer | Volume Shadow Copy support |
Geeft een overzicht van alle SQL Server services met hun status (Running / Stopped) en startmodus (Automatic / Manual).
2. Databases beheren
Op één DBMS bevinden zich meerdere databases:
| Type | Beschrijving |
|---|---|
| System databases | Noodzakelijk voor de werking van de SQL engine |
| Database snapshots | Read-only kopie van een database op een bepaald moment in tijd |
| User databases | Eigen aangemaakte databases |
System databases
| Database | Functie |
|---|---|
master |
Bewaart alle system-level informatie van de SQL Server instantie |
msdb |
Gebruikt door SQL Server Agent voor het plannen van alerts en jobs |
model |
Template voor alle nieuwe databases — wijzigingen hier gelden voor elke nieuwe database |
Resource (verborgen) |
Read-only database met systeem-objecten; zichtbaar via het sys schema |
tempdb |
Werkruimte voor tijdelijke objecten en tussenresultaten — wordt bij elke herstart opnieuw aangemaakt |
Overzicht bestaande databases opvragen
3. Nieuwe database plannen
Een database bestaat minimaal uit:
- Databasenaam
- Eigenaar
- ≥1 databestand — logische naam + fysieke locatie (
.mdf/.ndf) - ≥1 logbestand — logische naam + fysieke locatie (
.ldf) - ≥1 filegroup
- Opties: collation, recovery model, compatibiliteitsniveau, containment type, ...
Best practices opslag
- Gebruik RAID 1+0 of RAID 5 voor performantie en fouttolerantie
- Gebruik filegroups om objecten op specifieke schijven te plaatsen
- Zet het logbestand op een aparte fysieke schijf (scheidt lees- en schrijfoperaties)
DB.mdf → Raid 1 (primair databestand)
DB.ldf → Raid 10 (transactielogboek)
Sales1.ndf → Raid 5 (extra databestanden)
Sales2.ndf → Raid 10
TempDB → Raid 5/10
4. Database aanmaken
Object Explorer → rechtermuisklik op Databases → New Database...
Stel in: naam, eigenaar, databestand (grootte, autogrowth), logbestand, filegroups.
5. Database wijzigen
Wijzigt de fysieke structuur van een bestaande database:
- Databestanden, logbestanden of filegroups toevoegen/verwijderen
- Database-opties wijzigen
- Naam wijzigen
Object Explorer → rechtermuisklik op database → Properties
-- Recovery model instellen
ALTER DATABASE AdventureWorks2012
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO
-- Single-user mode (voor onderhoud)
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- Read-only zetten
ALTER DATABASE AdventureWorks2012
SET READ_ONLY;
GO
-- Terug naar multi-user
ALTER DATABASE AdventureWorks2012
SET MULTI_USER;
GO
6. Recovery modellen
Het recovery model bepaalt hoe SQL Server het transactielogboek bijhoudt — en daarmee wat er mogelijk is bij herstel na een storing.
| Model | Loggedrag | Point-in-time herstel | Log backup verplicht |
|---|---|---|---|
| Simple | Log wordt automatisch afgekapt na elke checkpoint | Nee — herstel tot laatste volledige of differentiële backup | Nee |
| Full | Log wordt volledig bijgehouden tot expliciet gebackupt | Ja — tot op de seconde | Ja |
| Bulk-Logged | Bulk-operaties worden minimaal gelogd | Beperkt — niet tijdens bulk-periode | Ja |
Simple
Het logbestand groeit niet ongecontroleerd: SQL Server hergebruikt de ruimte automatisch zodra een transactie voltooid is. Eenvoudig te beheren, maar je kan enkel herstellen tot de meest recente volledige of differentiële backup. Alles erna is verloren.
Kies Simple wanneer:
- De database niet businesskritisch is (testomgeving, ontwikkeldatabase)
- Dataverlies van uren acceptabel is
- Je geen log backups wil beheren
Full
Het volledige transactielogboek wordt bewaard totdat jij een log backup uitvoert. Dit maakt point-in-time recovery mogelijk — herstel tot exact het moment vóór een crash of fout. Vereiste keerzijde: log backups moeten regelmatig worden uitgevoerd, anders loopt het logbestand vol.
Kies Full wanneer:
- Dataverlies minimaal moet zijn (productieDatabases, financiële systemen)
- Point-in-time herstel een vereiste is
- Er een gestructureerd backup-schema is (volledig + differentieel + log)
Log backup vergeten = log loopt vol
Zonder regelmatige log backups blijft het .ldf-bestand groeien totdat de schijf vol loopt. Zet altijd een SQL Server Agent job in voor automatische log backups.
Bulk-Logged
Hybride model: gedraagt zich als Full, maar bulk-operaties (BULK INSERT, SELECT INTO, CREATE INDEX, ...) worden minimaal gelogd voor betere performantie. Het nadeel: tijdens zo'n bulk-operatie is point-in-time herstel niet mogelijk — alleen herstel tot het einde van de log backup die de bulk-operatie bevat.
Kies Bulk-Logged wanneer:
- Je grote data-imports of indexherbouw uitvoert
- Je tijdelijk minder log-overhead wil
- Je daarna terugschakelt naar Full
Tijdelijk wisselen
Een veelgebruikt patroon: schakel vóór een grote bulk-load over naar Bulk-Logged, voer de operatie uit, maak onmiddellijk een log backup, en schakel terug naar Full.
Recovery model instellen
Beslisboom
Is de database productiekritisch?
├── Nee → SIMPLE
└── Ja
├── Grote bulk-operaties gepland?
│ ├── Ja → Tijdelijk BULK_LOGGED, daarna terug naar FULL
│ └── Nee → FULL
└── Point-in-time herstel vereist?
└── Ja → FULL (met regelmatige log backups)
7. Database verwijderen
Onherroepelijk
Een verwijderde database gaat onherroepelijk verloren — inclusief alle data, tabellen en objecten. Zorg altijd voor een recente backup vóór je een database verwijdert.