Potentiellt problem med SQL Server i virtuella miljöer

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Först en brasklapp: Det jag kommer att skriva om nu är endast testat på VMware player, inte “riktiga” virtualiseringsmiljöer som VMWare ESX, Hyper-v eller Zen. Problemet består i att en virtuell miljö inte alltid respekterar att SQL Server INTE tolererar att skrivningar till disk cachas, med undantag för batteribackupade SAN write cache. Det som kan hända om man mitt i eller precis efter en skrivning till virtuell disk tappar den fysiska disken, är att man får inkonsistens i databasen.

Som ni känner till så går det till på förljande sätt när SQL Server uppdaterar/skriver/tar bort data:

1. Du skickar ett kommando till SQL Server. Till exempel en INSERT
2. SQL Server skriver i transaktionsloggen i följande format. BEGIN TRANS, INSERT , COMMIT TRANS
3. Aktuell page läses från disk till minne.
4. Aktuell page uppdateras i minnet
5. Vid nästa checkpoint skrivs aktuell page till disk igen.

Om SQL Server tror att vi har kommit till steg 4, men vi i själva verket inte har klarat av steg 2 på den fysiska disken får vi problem. Stora problem. Dett är helt klart värt att testa och fundera över innan implementation av SQL Server i virtuella miljöer. Läs mer här!