Skip to content

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).

DECLARE @agent NVARCHAR(512);

SELECT @agent = COALESCE(N'SQLAgent$' + CONVERT(SYSNAME, SERVERPROPERTY('InstanceName')),
    N'SQLServerAgent');

EXEC master.dbo.xp_servicecontrol 'QueryState', @agent;

Resultaat: Running of Stopped


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

Object Explorer → Databases → uitklappen

SELECT name, database_id, create_date
FROM sys.databases;
GO

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 DatabasesNew Database...

Stel in: naam, eigenaar, databestand (grootte, autogrowth), logbestand, filegroups.

USE master;
GO
CREATE DATABASE sample;
GO
Gebruikt de standaardconfiguratie ingesteld tijdens installatie.

USE master;
GO
CREATE DATABASE projects
ON (
    name       = projects_dat,
    filename   = 'd:\projects.mdf',
    size       = 10,
    maxsize    = 100,
    filegrowth = 5
)
LOG ON (
    name       = projects_log,
    filename   = 'd:\projects.ldf',
    size       = 40,
    maxsize    = 100,
    filegrowth = 10
);
GO

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

ALTER DATABASE projects
ADD FILE (
    name       = projects_dat1,
    filename   = 'C:\projects1.ndf',
    size       = 10,
    maxsize    = 100,
    filegrowth = 5
);
GO
-- 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

Object Explorer → rechtermuisklik op database → Properties → pagina OptionsRecovery model

-- Huidig model opvragen
SELECT name, recovery_model_desc
FROM sys.databases
WHERE name = 'MijnDatabase';
GO

-- Model wijzigen
ALTER DATABASE MijnDatabase SET RECOVERY FULL;
-- of: SIMPLE / BULK_LOGGED
GO

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

Object Explorer → rechtermuisklik op database → Delete

USE master;
GO
DROP DATABASE projects;
GO

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.