AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC: Endlosschleife bei Post auf FDTable

FireDAC: Endlosschleife bei Post auf FDTable

Ein Thema von ioster · begonnen am 8. Apr 2021 · letzter Beitrag vom 8. Apr 2021
Antwort Antwort
Seite 1 von 2  1 2   
ioster

Registriert seit: 15. Aug 2008
53 Beiträge
 
Delphi 10.3 Rio
 
#1

FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 08:11
Datenbank: MS SQL Server • Version: 2014 • Zugriff über: FireDAC
Moin,

ich habe eine elementares Problem bei einem Kunden, der meine Software (Delphi 10.3, FireDAC und DevExpress-Komponenten) in Kombination mit einem MS SQL Server 2014 einsetzt.

Es betrifft die immens wichtige Adresstabelle, die kein Post mehr verkraftet. Ich kann es per Fernwartung mit dem Debugger eingrenzen und komme immer bis zu der Stelle, wo das Dataset ein Post bekommt. Über den SQL-Profiler kann ich auch erkennen, dass ein UPDATE-Befehl an die Datenbank gesendet wird. Die Felder und Parameter sind auch in Ordnung, aber die Datenbank kann den Befehl nicht abarbeiten.

Vor Ostern konnten die Adressen noch problemlos angelegt und bearbeitet werden, aber seit vorgestern ist der Wurm drin. Ich habe jetzt schon die Datenbank offline und online geschaltet, die Indizes neu aufgebaut und auch das Autoinc-Feld, das im PRIMARY Key verwendet wird, neu generiert. Es hilft alles nichts.

Um auszuschließen, dass das Problem aus einem kürzlich eingespielten Programmupdate resultiert, habe ich auch die Vorgängerversion ausprobiert. Das macht keinen Unterschied und bestärkt mich darin, dass die Datenbank das Kernproblem darstellt. Ich habe nun auch schon eine Testdatenbank generiert und konnte das Problem beheben, in dem ich die Adresstabelle leere. Fülle ich sie mit den 12.000 Datensätzen wieder, habe ich erneut das Problem.

Woran kann so etwas liegen, wenn ich über das Management-Studio die Tabelle editieren kann und die anderen Tabellen auch keine Probleme bereiten. Es sind gut und gerne 50 Tabellen, die von dem Programm verwaltet werden. Der Adressstamm besteht auch aus mehreren Tabellen, die auch im Dialog eingebunden sind. Anhand der Ablaufverfolgung ist es aber eindeutig die Adresstabelle. Es macht auch keinen Unterschied, ob das Post vom cxDBNavigator oder mit einem bewussten Aufruf der Post-Methode ausgelöst wird.

Ich wäre für technische Tipps dankbar.

Viele Grüße
Ingo
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.246 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 09:10
Falls es sich um die SQL Server Express Edition handelt, könnte die dort geltende Größenbeschränkung für die Datenbank zuschlagen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
53 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 09:39
Falls es sich um die SQL Server Express Edition handelt, könnte die dort geltende Größenbeschränkung für die Datenbank zuschlagen.
Ich habe gerade nachgesehen - es ist in der Tat die Express Edition (64 bit). Die Installation der Datenbanksoftware habe ich selber nicht vorgenommen. Nur die für die Anwendung notwendige Datenbank habe ich angelegt.

Gibt es Größenbeschränkungen auf einzelne Tabellen? Laut Eigenschaften ist die DB im Augenblick 6.975 MB groß und hätte noch Platz für 1.966 MB. Die betroffene Tabelle hat 12.200 Datensätze und verbraucht dabei 25,266 MB.

Ich probiere im Augenblick aus, ob es einen Unterschied macht, wenn ich die ganzen referenzierenden Tabellen im Dialog weglasse. Dann könnte man übergangsweise Name, Straße und Ort erfassen.

Gruß
Ingo
  Mit Zitat antworten Zitat
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
145 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 10:45
Hast du mal manuell via Script probiert einen neuen Datensatz einzufügen? Nicht das irgendwo ein Feld mit Unique Index einen Wert hast den du bisher übersehen hast.
Die DB ist eigentlich zu klein als dass du an Beschränkungen stoßen solltest. Ich habe Tabellen mit mehr als 300K Datensätzen.
Stefan
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Jetzt rächt sich die Natur und tötet uns.
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
53 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 11:09
Ich habe die Tabelle nun noch einmal in meine Testumgebung kopiert und das Feld INFO für den Infotext entfernt. Das ist vom Typ nvarchar(max). Jetzt kann ich auf der Datenbank die Adressen bearbeiten und speichern.

Auf der echten Datenbank kann ich hingegen nicht einmal mehr über das Management Studio Änderungen an der Tabelle vornehmen. Wenn ich testweise ein Feld ändere, geht das System auch in eine Endlosschleife mit dem Unterschied, dass hier ein Timeout ausgelöst wird. Mit Escape kann ich die Änderung zurücknehmen und die Tabelle wieder verlassen.

Gruß
Ingo
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.246 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 11:31
Schau mal nach, ob die DB eine Änderungsprotokollierung macht. Ich hatte schon mal den Fall, dass die Logs zu groß wurden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
53 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 11:40
Es wurde gerade festgestellt, dass eine neue Adresse ohne Probleme erfasst werden konnte. Ich konnte es mit einem INSERT auch bewerkstelligen. Die Adresse, die das ganze Problem ausgelöst hat, ist aber mit einem DELETE nicht wegzuputzen.

Kann man irgendwo einsehen, ob bestimmte Datensätze in den Tabellen gelockt sind? Und wie bekommt man den Status weg? Mit Offline schalten alleine scheint es nicht getan zu sein. Das Problem breitet sich gerade auf die Tabelle aus, in der Angebote gespeichert werden.
  Mit Zitat antworten Zitat
ioster

Registriert seit: 15. Aug 2008
53 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 11:41
Schau mal nach, ob die DB eine Änderungsprotokollierung macht. Ich hatte schon mal den Fall, dass die Logs zu groß wurden.
Die Änderungsnachverfolgung ist laut Eigenschaften inaktiv. Es wird aber eine Statistik automatisch erstellt, die inzwischen etliche Einträge bei dieser Tabelle umfasst. Die wollte ich vorgestern schon löschen, ist mir aber mit den Mitteln des Management Studios auch nicht gelungen.
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
853 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 12:26
Möglicherweise läuft hier etwas in einen Deadlock (Stichwort Lock Escalation) - da kommt aber nach einer Zeit eine Fehlermeldung.
Möglicherweise sind die Indices untauglich, sodass für eien Operation ein Full Table Scan notwnedig wird - das dauert uU, aber führt schlussendlich auch zu einem Ergebnis.

Meldung bekommst du keine?
Wie lange wartest auf ein Ergebnis/Meldung?

Lass den Profiler mitlaufen + schau welches Statement (hier das Update) das problem macht + analysiere das - schau dir den Execution Plan an.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.630 Beiträge
 
Delphi 7 Professional
 
#10

AW: FireDAC: Endlosschleife bei Post auf FDTable

  Alt 8. Apr 2021, 13:00
Defekte Daten im nvarchar(max)?

Kannst Du beim Update aus Deinem Programm heraus mal diese Spalte weglassen? Geht es dann?

Ansonsten:

Backup und Restore der Datenbank machen?

Wie hast Du die Tabelle in Deine Testumgebung kopiert? Einfach 'ne Kopie der Datenbankdatei genommen oder Backup der Kunden DB und Restore in Deine DB oder ...?

Habe ganz selten mal ähnliche Probleme mit 'ner FireBird-Datenbank. Dann hilft immer ein Backup und ein Restore in eine neue Datenbankdatei.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf