Database corruption op Windows server (art. 542)
Probleem
Databases raken beschadigd op netwerken waarbij Windows NT/2000, XP, Windows Server 2003-2008 of Small Business Server 2003-2011 op de server gebruikt wordt. Op de werkstations wordt ook Windows NT/2000 of XP gebruikt.
Oplossing
Werking "Opportunistic Locking"
Microsoft Windows hanteert tot Windows Vista het SMB1 protocol. Windows NT/2000/2003/Small Business Server 2003 maken allemaal standaard gebruik van "Opportunistic Locking" om snelheidswinst te boeken. Op het moment dat een bestand vanaf de server wordt geopend, cachet het werkstation de informatie lokaal. Zodra de server merkt dat een tweede werkstation het bestand gaat openen, geeft de server een signaal aan het eerste werkstation om aan te geven dat lokaal cachen vanaf dat moment niet meer mogelijk is.
Dit mechanisme werkt helaas niet goed en veroorzaakt bestandsstoringen in het geval dat bestanden gedeeld moeten kunnen worden door meerdere werkstations. Databasebestanden worden met name veel op deze manier gebruikt. Om er voor te zorgen dat databases niet beschadigd raken is het van belang dat Opportunistic Locking wordt uitgezet. Van een negatief effect op de snelheid is overigens niets te merken.
Werkt u alleen met Windows Vista, Windows 7 i.c.m. Windows Server 2008 / SBS2011?
Indien er alleen met PC's met Windows Vista, Windows 7 in combinatie met Windows Server 2008 of SBS 2011 gewerkt wordt, hanteert de Windows server het SMB2 protocol. In deze situatie is opportunistic locking niet van toepassing. maar moet voor de Vista PC's wel het servicepack 1 geinstalleerd zijn. Zodra er echter in zo'n netwerk een Windows XP of Windows 2000 machine wordt aangesloten, gaat de server weer over op het SMB1 protocol. Daarmee wordt ook opportunistic locking weer ingeschakeld en is het uitschakelen hiervan ook weer van belang.
Hieronder volgt achtergrondinformatie m.b.t Opportunistic Locking. Onderaan dit artikel staat vermeld hoe op eenvoudige wijze het probleem verholpen kan worden.
Opportunistic Locking uitschakelen op Windows NT
Uitschakelen op de server vindt plaats door in de registry de volgende sleutel aan te maken of aan te passen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
create or change the EnableOplocks parameter to 0.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
create or change the CachedOpenLimit parameter to 0.
Uitschakelen op de werkstations vindt plaats door in de registry de volgende sleutel aan te maken of aan te passen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
create or change UseOpportunisticLocking to 0.
Zie ook de volgende artikelen in de knowledgebase van Microsoft:
Artikel Q129202 PC Ext: Explanation of Opportunistic Locking on Windows NT:
http://support.microsoft.com/default.aspx?scid=KB;en-us;q129202
Artikel Q126026 Server Optimization in RFCB Caching:
http://support.microsoft.com/default.aspx?scid=KB;en-us;q126026
Opportunistic Locking uitschakelen op Windows 2000/XP/2003
Uitschakelen op de server vindt plaats door in de registry de volgende sleutels aan te maken of aan te passen:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
create or change the EnableOplocks parameter to 0.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
create or change the CachedOpenLimit parameter to 0.
Uitschakelen op de werkstations vindt plaats door in de registry de volgende sleutel aan te maken of aan te passen:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MRXSmb\Parameters
create or change the OplocksDisabled parameter to 1.
Zie ook het volgende artikel in de knowledgebase van Microsoft.
Artikel Q296264 Configuring Opportunistic Locking in Windows 2000:
http://support.microsoft.com/default.aspx?scid=KB;en-us;q296264
DisableOplocks.reg
De bovenstaande registry-wijzigingen voor zowel NT, 2000, XP als 2003 hebben we samengevat in een REG-bestand.