Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: TADOCommand - Delete Befehl von mehreren Benutzern zu gleichen Zeit

  Alt 1. Dez 2015, 16:15
Ich habe gelesen, dass ein Delete Statement eine Tabelle exklusiv öffnet.
Das kommt auf die Datenbank an, MS SQL 2008 sollte es glaub ich besser können. Falls das überhaupt noch so ist, würde vermutlich höchstens noch blockweise gesperrt. Alles was im gleichen Block liegt, kann dann nur noch gelesen werden.

Dann ist es aber erstmal so:
Die Anwendung, die das Delete ausführt, wartet schlicht und ergreifend bis sie dran ist. Ist der Effekt massiv, weil der Server einfach nicht nachkommt, kann sie sich auch tot warten, wollen 2 Systeme den gleichen Datensatz löschen, kann ein Deadlock entstehen, beide warten auf den anderen.

Ich finde, die Fehlermeldung hat allerdings recht wenig mit diesem Löschvorgang zu tun. Möglich wäre, dass Du Anmeldung und Löschung so zusammencodiert hast, dass es irgendwie in einem geschieht. Arbeitest Du mit expliziten Transaktionen im Delphiclient? Oder verwendest Du SP auf der Datenbank, die ineinander greifen?*

Das könnte im Endeffekt zu diesem seltsamen Zusammenhang führen. Der Vorgang "Anmelden und Löschen" kann wegen Überlastung / Timeout des Servers nicht durchgeführt werden. Im Log erscheint dann nur der erste Fehler. Ist ja vermutlich ein Event Log des Servers und nicht von Dir bzw. Deiner Anwendung oder?

* oder Login Trigger?
Gruß, Jo
  Mit Zitat antworten Zitat