AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi multiple rows in singleton select
Thema durchsuchen
Ansicht
Themen-Optionen

multiple rows in singleton select

Ein Thema von hanspeter · begonnen am 10. Mär 2006 · letzter Beitrag vom 10. Mär 2006
Antwort Antwort
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

multiple rows in singleton select

  Alt 10. Mär 2006, 02:43
Datenbank: Firebird • Version: 1.5 • Zugriff über: IbObjects
Hallo,

beim Versuch eines Updates


SQL-Code:
UPDATE START
 SET MARKPT=' '
 WHERE SID=3208
bekomme ich die Fehlermeldung

multiple rows in singleton select


Mit Select * from Start WHERE SID=3208 bekomme ich aber nur eine Antwortzeile.
BackUp / Restore hat auch nichts gebracht.
Wo kann ich noch suchen ?

Gruß
Peter
  Mit Zitat antworten Zitat
Benutzerbild von faux
faux

Registriert seit: 18. Apr 2004
Ort: Linz
2.044 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 06:00
ev. hilft hier noch ein LIMIT 1?

Grüße
Faux
Faux Manuel
Wer weiß, dass er nichts weiß, weiß mehr, als der der nicht weiß, dass er nichts weiß.
GoTrillian
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#3

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 06:00
Hi tu oll!

Überprüfe mal die Trigger, die bei diesem Update zuschlagen. Eventuell ist das was schief gelaufen.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#4

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 08:13
So wie es aussieht war die Datenbank kaputt.
Dummerweise konnte der Fehler nicht mit Backup und Restore behoben werden.
Das habe ich mehrfach versucht und dazwischen auch die Datenbank gelöscht.

Jetzt habe ich eine einen Tag alte Kopie der Datenbank aus dem normalen Backup verwendet und es
funktioniert wieder.
Das ist übrigens bei Firebird nicht das erste mal, dass mir die Datenbank bis zur
Unbrauchbarkeit zerschossen wird.
Nicht sehr häufig aber 1 bis 2 mal im Jahr.

Gruß
Peter
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 08:35
Hi,

ich habe FB seit einigen Jahren im Einsatz (Netzwerk bis zu 10 User und das bei 30-40 Kunden) und mir ist noch nie eine DB kaputt gegangen. Hast Du vielleicht das Laufwerk auf dem die DB liegt gespiegelt (automatische Spiegelung)? Kopierst Du die DB direkt (z.B. bei einem Backup)?

GRüße
Lemmy
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#6

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 08:54
Ja, das jetzt wieder verwendete Backup ist direkt kopiert (Backup erfolgt täglich automatisch).
Das ist allerdings auf meinem Entwicklungsrechner passiert.
Irgendwann nach dem Debuggen mit D2006 war dann die Datenbank zerschossen.
Der Debugger war irgendwo im Programm hängen geblieben. Passiert mir mit D2006 regelmäßig.
Eine nicht abgeschlossene Transaction sollte doch mit dem folgenden Programmstart erledigt sein.

Gruß Peter
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#7

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 10:15
Hi,

du machst also ein Backup der Datenbank, indem Du die Datei (*.fdb) einfach kopierst? Das ist natürlich absolut tödlich! So etwas darst Du niemals bei einem SQL-Server machen, denn es ist nie klar, ob der Server noch auf die DB zugreift. WEnn das der Fall ist, kann es passieren, dass Du die DB zerstörst. Ein korrektes Backup kannst Du nur durch die Verwendung der Admin-Tools machen, z.B. gbak oder die Admin-Komponenten (IBBackupService). Die Backupdatei kannst Du dann nach belieben kopieren.

Eine nicht abgeschlossene Transaktion ist bei weitem nicht mit einem neuen Programmstart erledigt:

Beim Start einer Transaktion fertig FB quasi eine "Kopie" der Daten an. Kopie ist in " weil es keine richtige Kopie ist, mehr ein View auf die Daten. Wenn nun eine weitere (oder entsprechend mehrere) Transaktion anschließend gestartet werden, muss die Info über diese eine Transaktion immer mitgeschleift werden. Das erfordert mit der Zeit einen immer höheren Aufwand, was sich mit der Zeit auf die Geschwindigkeit auswirkt. Solche Transaktionen kannst Du nur dadurch wegbekommen, wenn Du einen Backup-Restore Zyklus machst, dann werden die begonnenen und nicht beendeten Transaktionen weggelöscht.

GRüße
Lemmy
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#8

Re: multiple rows in singleton select

  Alt 10. Mär 2006, 22:50
Zitat von Lemmy:
Hi,

du machst also ein Backup der Datenbank, indem Du die Datei (*.fdb) einfach kopierst? Das ist natürlich absolut tödlich! So etwas darst Du niemals bei einem SQL-Server machen, denn es ist nie klar, ob der Server noch auf die DB zugreift. WEnn das der Fall ist, kann es passieren, dass Du die DB zerstörst. Ein korrektes Backup kannst Du nur durch die Verwendung der Admin-Tools machen, z.B. gbak oder die Admin-Komponenten (IBBackupService). Die Backupdatei kannst Du dann nach belieben kopieren.

Eine nicht abgeschlossene Transaktion ist bei weitem nicht mit einem neuen Programmstart erledigt:

Beim Start einer Transaktion fertig FB quasi eine "Kopie" der Daten an. Kopie ist in " weil es keine richtige Kopie ist, mehr ein View auf die Daten. Wenn nun eine weitere (oder entsprechend mehrere) Transaktion anschließend gestartet werden, muss die Info über diese eine Transaktion immer mitgeschleift werden. Das erfordert mit der Zeit einen immer höheren Aufwand, was sich mit der Zeit auf die Geschwindigkeit auswirkt. Solche Transaktionen kannst Du nur dadurch wegbekommen, wenn Du einen Backup-Restore Zyklus machst, dann werden die begonnenen und nicht beendeten Transaktionen weggelöscht.

GRüße
Lemmy
Ja das ist mir alles bekannt.
Ich habe ja ausdrücklich geschrieben, dass es sich um meinen Entwicklungsrechner handelt.
Vor dem Shutdown läuft automatisch ein inkrementelles Backup. - Da ist kein Server mehr aktiv.
Und das Problem der nicht abgeschlossenen Transaktionen habe ich wenn D2006, was leider häufiger vorkommt, beim Debuggen abstürzt.
Delphi muss dann neu gestartet werden.

Gruß Peter
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz