Re: Firebird Embedded Server



Holger Klemt schrieb:

Ja, jeder Thread braucht seine eigene Connection (oder eben TIBDatabase). Das arbeitet dann wie ein zweites Programm. Und
zwei Programme können nicht gleichzeitig auf einer Datenbank
arbeiten. Wenn du das willst, musst du auf den Embedded Server verzichten und den normalen Server nehmen.

Mist :-( Ich wollte das Zeug möglichst einfach halten und nicht
gleich einen kompletten Server ins Installshield packen...

Andererseits brauche ich pro Zugriff nur zwei (kurze, einfache,
schnelle) Abfragen auf die Tabellen:
- nach User/Passwort anhand Parametern suchen
- Logeintrag machen
und dann darf "der nächste" wieder.

Wenn man das über eine TCriticalSection serialisiert, sollte
doch ein anderer Thread nur um ein paar Millisekunden verzö-
gert werden, oder?

Ich würde dann versuchen, das mit einem TDataModule (mit einer
TIBDatabase mit Active=True, zwei TIBSQL und der dazugehörigen
TIBTransaction) zu lösen, das _nicht_ automatisch erzeugt wird.
Wenn dann ein Thread Zugriff braucht, würde er folgendes machen:

myCriticalSection.Acquire;
myDataModule:=TDataModuleDings.Create(nil); // Db schon Active
try
myDataModule.IBTransaction.StartTransaction;
myDataModule.IBSQLUser.ParameterByName('user').AsString:='x';
myDataModule.IBSQLUser.ExecQuery;
while not myDataModule.IBSQLUser.Eof do
[...]
myDataModule.IBSQLLog.ParameterByName('dings').AsString:='y';
myDataModule.IBSQLLog.ExecQuery;
myDataModule.IBTransaction.Commit
finally
myDataModule.Free
end;
myCriticalSection.Release;

Dann sollte das doch funktionieren, oder? (Mir ist lediglich irgend-
ein Halbsatz in Deinem oder Frau Borries Buch in Erinnerung, daß
das Schließen der Datenbankverbindung wegen "Connection Pooling"
u.U. nicht sofort erfolgt - dann wäre die Verbindung für den
nächsten Thread noch nicht gleich wieder frei. Aber ich kann
mich nicht mehr erinnern, unter welchen Bedingungen dieser
Fall möglicherweise eintritt...)

Ich hoffe damit schon mal deine Tests zu vereinfachen

Oh ja, damit fallen vor allem viele davon weg :-) Danke!

Gruß Matthias.
.



Relevant Pages

  • Re: Paralleler Zugriff auf Access 2000 unter .Net
    ... > Client Server konzept. ... Für jeden neuen verbundenen Client wird ein eigener Thread ... Die Kommunikation mit den Clients ist Synchron. ... > Datenbank schreibe, den Zugriff auf die Datenbank sperren. ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: W2k3 - Performanceproblem bei Dateizugriff von einem XP (SP2)-Client
    ... Daten und Einpflegen in die Datenbank. ... Beim Schreiben in die Datenbank werden mehrere Tabellen geöffnet ... Diese Datentabellen liegen auf einem Windows Server 2003 R2 ... Ist mein Programm an einem einzigen Client ...
    (microsoft.public.de.german.windows.server.general)
  • Re: Zugriff auf SQL-Datenbank übers Netzwerk
    ... Ich schreibe gerade ein Programm, welches auf eine SQL Server 2005 Express ... Datenbank zugreift, bis jetzt alles lokal. ... dass mein Programm auf den Clients installiert ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)
  • Re: Zentrale Datenverwaltung
    ... > diese an den Server gesendet und in eine Datenbanktabelle eingetragen ... > sprich die Datenbank wird ausgelesen ... thread-übergreifende Zugriffe ohne Invoke? ... Previous by thread: ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Zugriff auf SQL-Datenbank übers Netzwerk
    ... dass mein Programm auf ... den Clients installiert werden soll und die Datenbank ... auf einen Server liegen kann. ... SQL-Server nun auf Deinem eigenen oder einem ...
    (microsoft.public.de.german.entwickler.dotnet.datenbank)