vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Datensatz 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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Datensatz gelockt bei DELETE 
Autor: Scorpi
Datum: 20.02.17 10:21

leider wird das durch ein Try nicht abgefangen ...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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