Deadlock traceren

Status
Niet open voor verdere reacties.

boetie

Nieuwe gebruiker
Lid geworden
2 jun 2004
Berichten
2
Hallo,

Ik heb een applicatie ontwikkeld met een koppeling naar een SQL-database. deze applicatie wordt door meerdere gebruikers opgestart en hierdoor loop ik denk ik tegen het volgende probleem aan: Ik heb geregeld dat mijn applicatie een deadlock krijgt.

Als ik alle processen in de SQL-managementstudio open, dan zie ik wel heel vaak de melding: Set NO-BROWSE On / Set No BROWSE of in de geblokkeerde of blokkerende processen. Ik neem aan dat het ene proces iets aan wil zetten en de andere iets uit. Ik snap alleen niet wat en ook niet waardoor dit kan, want ik gebruik nergens een dergelijk statement.

Iemand een suggestie wat dit kan zijn en hoe ik dit kan oplossen?

Alvast bedankt,

Groeten Menno.
 
Een deadlock traceren (en nog beter voorkomen) is helaas niet zo eenvoudig als het lijkt. Een deadlock verschilt van een normale lock, welke je wel binnen de processen kunt zien. Een "normale" lock hoort bij het hele database principe, een proces locked de tabel, zodat hij ongestoord de data bij kan werken, zonder dat iemand anders in de tussentijd de data aanpast. Andere processen die ook willen schrijven wachten hier rustig op, totdat ze aan de beurt komen.

In het geval van een deadlock echter, heeft proces A bijvoorbeeld tabel1 gelocked, en schrijft ondertussen (met een lock) wat in tabel2. Nu wil proces B ook wat in tabel2 schrijven, maar heeft ondertussen al een lock op tabel3, omdat hij daar ook wat wil wegschrijven. Om te voorkomen dat zo'n situatie oneindig kan blijven duren wordt er een deadlock proces gestart, en krijgt de "verliezer" de deadlock melding voor z'n kiezen.

Dit is even een korte banale uitleg van een deadlock. Wij sturen hem daarna altijd door naar de DBD (database developers), als het een consequent probleem blijkt te zijn.

Hier wat aanwijzingen hoe je ze kunt monitoren, zodat je weet wat er precies gebeurt. http://archive.msdn.microsoft.com/S...?title=Troubleshoot Deadlocking in SQL Server

Wellicht dat je dan bepaalde processen anders kunt inrichten, zodat ze minder vaak voorkomen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan