![]() |
Datenbank: MSSQL • Version: 2019 • Zugriff über: FireDAC
Schreiben in die Datenbank macht Endlosschleife
Hallöle...8-)
gegeben: * mehrere Arbeitsplätze * exakt gleiche EXE an jedem Arbeitsplatz * gleicher Native MSSQL Treiber an jedem Arbeitsplatz * gleiche Daten aus der selben Tabelle der gleichen Datenbank Ich habe an einem Arbeitsplatz folgendes Problem: * jegliche Änderung am gleichen Datensatz -> Speichern bringt eine Endlosschleife (nach 10 Minuten abgebrochen) :kotz: * reproduzierbar am gleichen Datensatz (an anderen Arbeitsplätzen kann dieser Datensatz gespeichert werden :shock:) * auch nach dem Speichern an einem anderen Platz kann der geänderte Datensatz nicht gespeichert werden. :shock: * keine Fehler im Programm, keine Fehler im EventLog Technologie: nackige Query mit ExecSQL. ...ich habe keine Idee. :? Morgen werde ich mal den TimeOut der Datenbank prüfen...ggf. auf kurz setzen. Dann prüfe ich die Größe der Felder...eigentlich kommt dann direkt ein Fehler. Danke für Infos. :wink: |
AW: Schreiben in die Datenbank macht Endlosschleife
Gleiche OS Version auf allen Rechnern? Evtl. 32/64 Problematik?
Tritt das Problem bei einem speziellen Datensatz oder bei allen Datensätzen auf? |
AW: Schreiben in die Datenbank macht Endlosschleife
Moin...8-)
Zitat:
Zitat:
PS: In diesem "Modul" werden an diesem Platz ca. 100 Änderungen an verschieden Datensätzen gemacht. Nur dieser eine will nicht. Zitat:
Delphi-Quellcode:
procedure TFormDistributorLogic.SaveDistributor;
function CanSaveHistorie: Boolean; begin Result := not ((FModifiedDistributor.StateInternType = FOriginalDistributor.StateInternType) and (FModifiedDistributor.ResponsibleTo = FOriginalDistributor.ResponsibleTo) and (FModifiedDistributor.DocumentChoice = FOriginalDistributor.DocumentChoice)); end; begin if Assigned(FOnChangeGridBegin) then begin FOnChangeGridBegin(Self); end; DMZU.Database.Write(FModifiedDistributor, CanSaveHistorie); // Historie siehe DB Trigger FDistributorDatasource.Changed := True; FModifiedDistributor.IsChanged := False; // setzt auf normal FOriginalDistributor.Assign(FModifiedDistributor); if Assigned(FOnChangeGridEnd) then begin FOnChangeGridEnd(Self); end; end; |
AW: Schreiben in die Datenbank macht Endlosschleife
Kann es vielleicht die Technik darunter sein?
Also vielleicht ein Fehler im Netzwerk? Auch wenn ich mir nicht vorstellen kann, dass das nur einen spezifischen Datensatz betreffen sollte. Hast Du den SQL-Server schon mal neu gestartet? |
AW: Schreiben in die Datenbank macht Endlosschleife
Moin,
Was macht dein FOnchangeGridStart und FOnChangeGridEnd? hast du irgendwas in Richtung Livebinding auf dem Grid liegen? Das wird nämlich durch eine Datasource änderung ein GridChange triggern. Gruß PJM |
AW: Schreiben in die Datenbank macht Endlosschleife
Danke...8-)
Zitat:
Delphi-Quellcode:
procedure TfoDistributor.DoOnChangeGridBegin(Sender: TObject);
begin if Assigned(FLogic.ModifiedDistributor) then begin FLogic.DistributorDatasource.LastID := FLogic.ModifiedDistributor.ID; end; gtvDistributor.BeginUpdate; end; procedure TfoDistributor.DoOnChangeGridEnd(Sender: TObject); begin // wichtig! gtvDistributor.EndUpdate; TToolsDevExpress.SelectRecord(gtvDistributor, 0, FLogic.DistributorDatasource.LastID, null); end; Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Schreiben in die Datenbank macht Endlosschleife
Hat der Datensatz was besonderes, evtl. Umlaute (Evtl. unterschiedliche Zeichensätze/Sprachen auf den Rechnern?)
|
AW: Schreiben in die Datenbank macht Endlosschleife
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
|
AW: Schreiben in die Datenbank macht Endlosschleife
Wenn Du kannst, versuch doch, auch wenn der Rechner neu ist, einen andere Netzwerkkarte und / oder Kabel... oder tatsächlich einen anderen Port auf dem Netzwerkswitch.
|
AW: Schreiben in die Datenbank macht Endlosschleife
Zitat:
|
AW: Schreiben in die Datenbank macht Endlosschleife
Versteh ich das richtig: das Write auf der DB wird ausgelöst, kommt aber nicht zurück? Könnten hier DB Trigger rein spielen, die einen Lock erzeugen? Ich kenn mich jetzt mit MSSQL nicht aus, aber hast Du schon mal auf der DB nachgeschaut, ob Du dort etwas über das ausgeführte Statement heraus findest (Oracle hatte da was, wenn ich mich recht erinnere).
|
AW: Schreiben in die Datenbank macht Endlosschleife
Zitat:
Zitat:
Zitat:
PS: Der Timeout stand auf 600 Sekunden. Zum Test auf 60 Sekunden reduziert. |
AW: Schreiben in die Datenbank macht Endlosschleife
Das mit dem DB Trigger war eine Idee, weil der Code was von DB Trigger bzgl. Historie schrieb:
Delphi-Quellcode:
DMZU.Database.Write(FModifiedDistributor, CanSaveHistorie); // Historie siehe DB Trigger
Zitat:
![]() |
AW: Schreiben in die Datenbank macht Endlosschleife
Zitat:
|
AW: Schreiben in die Datenbank macht Endlosschleife
Ich würde als erstes mit dem MSSQL Profiler schauen, was der SQL Sver macht, wenn der Datensatz geschrieben wird.
Hängt das Programm (= Endlosschleife in deinem Code) oder hängt der SQL Server (=Locking). Wenn du das weißt, kann man gezielter weitermachen. Keinesfalls würde ich (jetzt schon) herumprobieren (neu starten, Hardware tauschen etc). Im besten Fall hilft es nichts, im schlechtesten Fall ist das Problem dann weg + du weißt nicht wieso. |
AW: Schreiben in die Datenbank macht Endlosschleife
Neuigkeiten:
1. Das alte Kabel vom Computer zur Dose hatte einen Knick was zu höheren Kurvengeschwindigkeiten für die Daten führt. :stupid: :zwinker: (Wer den witzigen Forumseintrag über Kabelverlegung findet, kann ihn gern mal anhängen. Ich habe ihn nicht gefunden. :wink:) 2. Kabel getauscht (gleiche Dose) -> gleicher Fehler am gleichen Datensatz :? 3. neues Kabel an neuer Dose -> Speicherung korrekt. :cheer: 4. altes Kabel an neuer Dose -> Speicherung korrekt. :cheer: ...nächste Woche muß der externe IT Fuzzi mal die Dose/Port durchmessen. :wink: Trotzdem ist es unlogisch...:gruebel: |
AW: Schreiben in die Datenbank macht Endlosschleife
Da mit neuem und altem Kabel die Speicherung an anderer Dose korrekt ist kommen nur noch vier Möglichkeiten in Frage:
- Dose selbst - entsprechender Port auf Patchfeld - Patchkabel vom Patchfeld zum Switch - Port auf Switch selbst Ich persönlich tippe auf dem Switch. |
AW: Schreiben in die Datenbank macht Endlosschleife
Ich persönlich auch :-) (Firewall Regel, Filter oder oder ..)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz