AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mehrere DB-Verbindungen aus Dienst überfordern Firebird ?!
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere DB-Verbindungen aus Dienst überfordern Firebird ?!

Offene Frage von "DataCool"
Ein Thema von DataCool · begonnen am 5. Mär 2009 · letzter Beitrag vom 10. Mär 2009
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Mehrere DB-Verbindungen aus Dienst überfordern Firebird ?!

  Alt 5. Mär 2009, 15:41
Datenbank: Firebird • Version: 1.0.0.796 • Zugriff über: BDE
Hi Leute,

ich habe 2 Firebird Datenbanken die ich aus einem Dienst herraus aus seperaten Threads anspreche.
Ein Thread importiert Daten aus einer anderen Datei und schreibt diese in "DB 2",
dabei werden Event gesteuert auch bei jedem "Insert, Update u. Delete" Daten in DB 1 geschrieben.
einer Anderer liesst Daten aus der "DB 1" und syncronisiert diese übers Inet mit einem Server.
Der Dienst hat die Berechtigung zur Interaktion mit dem Desktop und verbindet sich via BDE zur Datenbank.
Jeder Thread hat seine eigene DB-Verbindung, welche Dynamisch erzeugt und freigegeben wird !

Jetzt gibt es noch das GUI-Interface mit dem die Kunden auf der Datenbank(DB 1) arbeiten,
manchmal kommt es jetzt vor das die Kunden keine Änderungen an den Datensätzen mehr vornehmen können.
So wie's scheint bekommt die Query keine ErrorMessage nur die Daten bleiben unverändert.
Konnte das ganze bei mir noch nicht reproduzieren, aber Kunden die dieses Problem haben konnten mir keine Fehlermeldung nennen.

Ein Neustart des Rechners bringt wie so oft Abhilfe.

Hat irgentjemand eine Ahnung warum die Datenbank in eine Art "Locked" Zustand übergeht und der Dienst dabei scheinbar noch schreiben kann ?! Kann es an den Threads liegen ? An den mehrfachen DB Verbindungen die teilweise auf gleichen Tables Daten ändern ?
Oder ist das Problem bei der BDE zu suchen ? Den Diwnst könnte ich auf direkten Zugriff umstellen; das GUI-Interface nicht ohne weiteres.

Bin für jeden Tipp dankbar,

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 5. Mär 2009, 16:03
Hallo,

1. BDE ist AFAIK nicht threadfest
was ist pro Thread an DB-Komponenten definiert ?
2. mind. auf FB 1.5 umsteigen.




Heiko
Heiko
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 5. Mär 2009, 16:28
Besser noch FB 2.5, da kann man von er einen DB Abfragen auch die andere absetzen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 5. Mär 2009, 16:42
Hi Leute,

wenn das Umstellen mal eben so erledigt wäre, hätte ich das schon lange erledigt

Das ganze läuft in über 100 Standorten ...

Die Threads haben jeweils ein TDatabase und mehere TQuerys.

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 5. Mär 2009, 17:38
Um so wichtiger ist es eine Alternative zur BDE zu implementieren.Die Migration von FB 1.x auf FB 2.x geht meist schmerzfrei.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 5. Mär 2009, 19:24
@mkinzler:

Stimme ich Dir absolut voll zu, das steht auch ganz oben auf meine ToDo-Liste für V2 meines Programms.

Allerdings brauche im Moment eine Quick & Dirty Lösung des Problems,
d.h. würde es helfen das ganze aus den Threads auszulagern und innerhalb eines Timers im Dienst auszuführen ?

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 5. Mär 2009, 19:53
Hallo,

die Threads brauchen auch je ein TSession.
Such mal im Netz nach BDE multithread.

Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 6. Mär 2009, 13:12
@Hoika:
^^^^ Gesagt getan,

werde jetzt in meine Klasse die die Datenbankverbindung kapselt für jede(s) Verbindung/TDatabase eine eigene Session erzeugen.
Wenn ich das richtig verstanden hae sollte das mein Problem bis zur Umstellung erstmal beheben, richtig ?

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
neo4a

Registriert seit: 22. Jan 2007
Ort: Ingolstadt
362 Beiträge
 
Delphi XE2 Architect
 
#9

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 6. Mär 2009, 13:44
Ja, das hilft möglicherweise.

Deine Darstellung aus dem Eröffungs-Post deutet für mich auf ein Transaktions- Deathlock- Problem hin (zwei Verbindungen ändern Datensätze gleichzeitig). Das kann durchaus durch After/Before/Trigger ausgelöst sein und damit Änderungen auch in dritten Tabellen verursachen (bspw. Log- oder Summary-Tabellen). Dies wäre dann allerdings ein DB-Design- Problem, das Du auch nicht mit Sessions löst.

Prüfe, ob Trigger oder Stored Procedures involviert sind, die bei Datenänderung ihrerseits Daten ändern. Falls das nicht der Fall ist, dann war's tatsächlich nur die BDE mit unklarem Transaktionsverhalten.

--
Andreas
Andreas
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Mehrere DB-Verbindungen aus Dienst überfordern Firebird

  Alt 6. Mär 2009, 13:52
Hallo,

Einspruch
Unklares Transaktons-Verhalten der BDE ?
Damit hatte ich noch nie Probleme.

Aber trotzdem noch eine Frage zu Transaktionen.
Steuerst du die Transaktionen selber (DB.StartTransaction / DB.Commit),
oder überlässt du das der BDE ?


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 11:29 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