27. März 2012 12:49
Hallo,
ich bin in einem Projekt in dem eine Tabelle X genutzt wird, welche eine hohe Frequenz hat.
D.h. es werden alle paar Sekunden Daten reingeschrieben und ausgelesen.
Prozess 1 : Schreibt Daten in die Tabelle
Prozess 2 : Liest die Daten periodisch aus.
Nun bekomme ich beim auslesenden Prozess 2 öfter (etwa 3-4 mal am Tag) einen Meldung (wird geloggt):
"Ihre Aktivität wurde durch die Änderung der Tabelle X durch einen anderen Anwender blockiert. Bitte beginnen Sie die Aktivität noch einmal"
Navision läuft mit SQL, daher habe ich mal den SQL Profiler mit loggen lassen. Diesen habe ich auf Deeadlocks eingestellt.
Genau: Ich habe mir den Deadlock Graph anzeigen lassen.
Genau zu diesem Zeitpunkt der Fehlermeldung wird auch ein Deadlock registriert.
Nur leider kann ich damit irgendwie nicht anfangen denn, ich habe 2 beteiligte Tabelle: Tabelle X und ?
Der Deadlog-Graph setllt sich in etwa so dar:
Serverprozess 2 ------> Tabelle 1: Mandant$TabelleX$0 ----------> Serverprozess 1
(wurde geopfert) <------ Tabelle 2: $1 <---------------------------- (Ist Gewinner)
Weiß irgendjemand was die Tabelle $1 ist und wie ich hier einen Deadlock verhindern oder reduzieren könnte?
Danke in voraus