| |
ADO.NET / DatenbankenDatensatz gelockt bei DELETE | | | Autor: Scorpi | Datum: 17.02.17 07:56 |
| Hallo,
ich habe ein Problem, Ich habe eine Abfrage laufen die über zwei Tabellen läuft und bearbeitet ca. 2.944 Daten in der Haupttabelle und ca. 50.000 Datensätze in der Detail-Tabelle. Bei genau Satz 2937 in der Haupttabelle wird ein Delete auf die Detail-Tabelle ausgeführt. Hier läuft es nicht mehr weiter.
Im der Processlist steht bei dem Delete "lock"
Was kann das sein. Merkwürdig ist, in der Firma bleibt man schon früher stehen als bei mir @Home. Es muss also eine Einstellung am Server liegen
Für Antworten wäre ich sehr dankbar
Scorpi | |
Re: Datensatz gelockt bei DELETE | | | Autor: Franki | Datum: 18.02.17 03:16 |
| Hallo,
ohne die DB zu kennen und ohne etwas Code was du da genau machst kann man nur Vermutungen anstellen wo der Fehler liegt.
Auch die Fehlerbeschreibung sollte etwas ausführlicher sein. Denn bei genau Datensatz 2937 bleibt es stehen, zu Hause aber früher lässt nicht auf eine falsche Servereinstellung schließen. Eine solche Einstellung gibt es nicht.
Welcher Datensatz ist es denn zu Hause? Was sind die Unterschiede im Datensatz? Ist das nur ein Zeitproplem? Könnte auch ein Timeout sein, Speicherüberlauf oder sonst was in der Richtung.
Was passiert wenn du in der Testumgebung mal den Datensatz 2937 aus der DB entfernst, läuft es dann durch? Es kann am Datensatz der DB liegen, dann müssten beide Testumgebungen aber an gleicher Stelle aussteigen.
Wenn es unterschiedliche Ausstiegskritierien sind liegte eine andere Ursache vor.
Also bitte mehr Infos, sonst kann man da nicht wirklich helfen...
Gruß
Frank | |
Re: Datensatz gelockt bei DELETE | | | Autor: effeff | Datum: 18.02.17 15:52 |
| //Bei genau Satz 2937 in der Haupttabelle wird ein Delete auf die Detail-Tabelle ausgeführt.//
Was ist ein Datensatz 2937? So etwas gibt es in einer Datenbank nicht. Meinst Du einen Datensatz mit der ID 2937?
Was für eine Datenbank benutzt Du? MS SQL?
Tritt der Fehler bei gleichen Daten auf, die nur bei der Arbeit und zuhause eine jeweils andere ID tragen?
Finden noch Zugriff auf den Datensatz von anderen Usern oder automatischen Programmen statt?
Kannst Du das Problem umgehen, indem Du die Daten häppchenweise löscht? Siehe https://support.microsoft.com/en-us/help/323630/how-to-resolve-blocking-problems-that-are-caused-by-lock-escalation-in-sql-server
EALA FREYA FRESENA | |
Re: Datensatz gelockt bei DELETE | | | Autor: Scorpi | Datum: 20.02.17 07:50 |
| Hallo,
die Datenbank ist MySQL 5.14. Mit dem Datensatz 2937 meinte ich den 2937. Satz aus der Haupttabelle aber das ist auch nicht wirklich das Problem. Es hängt auch nicht an einem Timeout (jedenfalls glaube ich das nicht)
Das Skript was da abläuft ist ziemlich komplex. Dazu muss ich weiter ausholen. Wir sind ein Chemiewerk und produzieren z.B Textmarker. Eine Verkaufseinheit Textmarker besteht aus 5 Stifte. Ein Kunde bestellt nun 500 Einheiten. Der Lagerbestand reicht um 300 davon zu decken. Heißt es fehlen 200 Verkaufeinheiten. Um 200 Verkaufeinheiten zu produzieren brauche ich 1000 einzel Stifte. man schaut nun wie viele Stifte man am Lager hat. von den 1000 Benötigten hat man 900. Es fehlen also 100 Stifte jetzt schaut man weiter runter in der Stückliste was man braucht um 100 Stifte zu produzieren.
Dieses Verfahren machen wir bei alles Artikel die gerade im Verkauf sind
In meinem Fall ist das Skript bei 2937 von insgesamt 2944 "rausgeflogen"
Wenn das passiert, kann man ich die Datenbanktabelle nicht mehr öffnen weil auf der Tabelle ein Lock ist. Keine Ahnung wo das herkommt im ganzen Skript gibt kein Lock
Erst wenn ich mein Programm abbreche kann ich die Tabelle wieder lesen
Danke
Scorpi | |
Re: Datensatz gelockt bei DELETE | | | Autor: effeff | Datum: 20.02.17 10:16 |
| Kannst Du versuchen, den Fehler abzufangen (Try/Catch) und dort dann den Befehl "Unlock Tables DEINETABELLE" abzusetzen, um danach Deinen Code weiterlaufen zu lassen?
EALA FREYA FRESENA | |
Re: Datensatz gelockt bei DELETE | | | Autor: Scorpi | Datum: 20.02.17 10:21 |
| leider wird das durch ein Try nicht abgefangen ... | |
Re: Datensatz gelockt bei DELETE | | | Autor: effeff | Datum: 20.02.17 17:47 |
| //In meinem Fall ist das Skript bei 2937 von insgesamt 2944 "rausgeflogen"
Wenn das passiert, kann man ich die Datenbanktabelle nicht mehr öffnen weil auf der Tabelle ein Lock ist. Keine Ahnung wo das herkommt im ganzen Skript gibt kein Lock //
Dein eigenes Programm greift auf die Datenbank zu und sperrt diese.
Es wäre nun vorteilhaft, würden wir Deinen Code kennen, um beurteilen zu können, ob man daran etwas verbessern kann, was den Fehler beseitigt...
EALA FREYA FRESENA | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|