![]() |
Datenbank: egal • Zugriff über: egal
Was tun bei Verbindungsabbruch
Hallo,
ich habe mal eine Frage zur grundsätzlichen Strategie: Wenn man mit Datenbanken arbeitet, kann es ja immer passieren, dass der Datenbankserver plötzlich nicht mehr erreichbar ist (Netzwerk abgeschmiert, Server abgestürzt...). Wie ist in so einem Fall die beste Vergehensweise, wenn gerade die Ergebnisse eines Queries durchgegangen werden? Sollte man, nachdem die Verbindung wieder steht, die Abfrage von vorne beginnen, oder in der Zeile weitermachen, wo man aufgehört hat (dann kann sich aber ja das Ergebnis schon geändert haben)? Was macht eine Datenbank, wenn z. B. ein Insert/Update-Query nur halb ankommt? Ich hoffe doch, den Müll verwerfen, oder? Macht Ihr vielleicht alles ganz anders? Ich bin gespannt auf Eure Methoden, mit dieser Situation umzugehen. Gruß xaromz |
Re: Was tun bei Verbindungsabbruch
Hallo xaromz,
Zitat:
Zitat:
Somit ist eine Transaktiontion in der DB erst gültig, wenn ein Commit gesendet wurde. Stürzt der DB-Server mal ab, sind die Daten auf dem Stand des letzten Commits. Bricht die DB-Verbindung weg, is es ähnlich. Das letzte Commit zählt. Ich hoffe, ich hab nix falsches erzählt. :zwinker: |
Re: Was tun bei Verbindungsabbruch
Zitat:
![]() Dies sollte für jede "normale" SQL-Datenbank der Fall sein. Bei Desktopdatenbanken schaut es anders aus. Hier kann sehr wohl ein Verbindungsabbruch zu einer zerschossenen DB oder ungültigen Zustand in der DB führen. |
Re: Was tun bei Verbindungsabbruch
Hallo,
Zitat:
Zitat:
Zitat:
Gruß xaromz |
Re: Was tun bei Verbindungsabbruch
Zitat:
|
Re: Was tun bei Verbindungsabbruch
Zitat:
Woher soll z.B. der TCP-Stack wissen, was in den TCP-Paketen drin ist. Die Transaktionen müssen schon von der Applikation (in diesem Fall die Datenbenk-Software) verwaltet werden. Die meisten DBMS arbeiten intern auf transaktionsbasis, wovon der Anwender (deine Software) nichts mitbekommt. |
Re: Was tun bei Verbindungsabbruch
Zitat:
Die Sorge, daß eine nur 'halb angekommene' Query abgearbeitet wird, ist aber schon 'im Vorfeld' unbegründet, wie Bernhard schon schrieb. |
Re: Was tun bei Verbindungsabbruch
Zitat:
![]() |
Re: Was tun bei Verbindungsabbruch
Zitat:
|
Re: Was tun bei Verbindungsabbruch
Zitat:
Es kann nicht Schicht 5 sein. Die weis noch nichts von DB-Transaktionen. Erst Schicht 7 – Anwendungsschicht kennt das und kann das auch erst machen. |
Re: Was tun bei Verbindungsabbruch
Hallo,
danke für die bisherigen Informationen. Zitat:
Gruß xaromz |
Re: Was tun bei Verbindungsabbruch
Zitat:
Jede Schicht prüft, ob ihre Anforderungen für die Übertragung gegeben sind. Der "TCP-Schicht" ist doch wurscht, was in den Paketen drin ist. Sind die einzelnen pakete gültig, werden sie weitergegeben. Fehlt ein paket, wird es neu angefordert. Ist ein paket falsch, wird es neu angefordert. Die nächste Schicht setzt dann die Pakete zusammen. Dies könnte die Kommunikation zweier DB-Komponenten sein. Aber auch diese Schicht weis noch nichts von Transaktionen. Erst die letzte Schicht (eben die DBMS-Applikation) kann entscheiden, ob die Transaktion komplett ist. |
Re: Was tun bei Verbindungsabbruch
Zitat:
Kann man einstellen, ob sie zu MSSQL, MySQL, PostgreSQL oder weitere connecten sollen. |
Re: Was tun bei Verbindungsabbruch
Zitat:
|
Re: Was tun bei Verbindungsabbruch
Hallo,
Zitat:
Gruß xaromz |
Re: Was tun bei Verbindungsabbruch
Zitat:
Zitat:
Das die Transaktionssteuerung mehr Intelligenz (höhere Ebene) erfordert ist mir klar. Mir ging es nur um diesen Fall das eine SQL-Anweisung nur halb ankommt (Z.B. auf 2 IP-Packete verteilt wovon das 2te verloren geht). |
Re: Was tun bei Verbindungsabbruch
Zitat:
Die liegt im Betriebssystem verborgen. Falls dieser Fall eintreten sollte, dass nur ein Teil der zur Query gehörenden pakete ankommen, wird dir wohl das Betriebssystem auf dem Client eine Exception werfen. Diese wird evtl von den Delphi-Komponenten für den DB-Zugriff abgefangen und weitergereicht. |
Re: Was tun bei Verbindungsabbruch
Hallo,
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:02 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