![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: FIBPlus
User aus DB kicken
Hallo,
wie kann ich einen Datenbank-User, der in der DB angemeldet ist, von der DB abmelden? Wir setzen eine Firebird-basierte Software ein und es passiert (Verbindungsabbrüche, Remote-Sitzung schmiert ab etc.), das die Software nicht ganz regulär beendet wird und der DB-User nicht abgemeldet wird. Sollte nicht, ist aber leider so. Deshalb ist es nötig, ihn "hart" von der DB abzumelden. Wie kann man so was anstellen? Also ohne den Server neu zu starten :) |
Re: User aus DB kicken
Hallo,
das macht Firebird selber, allerdings erst nach einer gewissen Zeit. Der Server sendet dazu "stay alive" Pakete zu den Clients. Antworten die nicht (nach x mal, mit y Sek warten), wird die Verbindung gekappt. Such mal in der Firebird.conf nach ConnectionTimeout Heiko |
Re: User aus DB kicken
Hallo,
danke für die Info. In der Config ist diese Zeile auskommentiert, also nehm ich an, er nimmt den Standardwert von 180s. Aber denke, das heißt, daß nach 180s das erste mal stay alive gesendet wird? Denn im Havariefall bleibt der User wesentlich länger als 3min angemeldet. So bleibt es für mich interessant, ob man einen User kicken kann und wenn ja, wie... |
Re: User aus DB kicken
Ich muß diesen Beitrag noch mal aus der Versenkung holen. Weiß jemand eine Lösung? Den Wert aus der Config scheint FB irgendwie zu ignorieren... :gruebel:
|
Re: User aus DB kicken
Du kannst so einen Firebird server komplett und sofort abwürgen:
Code:
Das ist aber bestenfalls eine widerliche Lösung.
gfix -user [DeinDba] -password [DeinPassword] [DeinServer]:[PfadZurDB] -shut full -force 0
Schaue dir mal Multi-Tier Frameworks wie DataSnap, ![]() ![]() Heutzutage mögen direkte Verbindungen zur DB für kleine Tools im Intranet noch ok sein, aber alles andere sollte zumindest einen App server haben, der die DB vor den Clients schützt (und die Clients vor DB-spezifischen Macken). |
Re: User aus DB kicken
|
Re: User aus DB kicken
Hm. Das hab ich befürchtet. Die Lösung, die DB zu stoppen und starten ist mir bekannt, so mach ich es ja momentan. Nur ist das halt ziemlich besch*****, die hier ja alle User gekickt werden bzw. sich vorher abmelden müssen. Schön wäre, die Verbindung eines bestimmten Users trennen zu können.
Aber wenn ich das richtig verstanden habe, ist das wohl momentan (noch) nicht möglich ..? @Elvis: Das ist richtig, normal läßt man den User nicht direkt auf die DB. In meiner Software mach ich das auch nicht so. Aber diese hier ist nicht von mir, ich hab sie sozusagen "geerbt". |
Re: User aus DB kicken
Die Firebirdler haben wohl schon seit ca. 3 Jahren ein offenes Ticket (siehe Link), welches genau das Feature fordert. Offenbar ist es bis heute nicht implementiert. Von daher sieht es wohl leider recht schlecht aus.
Allerdings könnte unser IBexpert auch was Gegenteiliges wissen, von dem wir hier nix wissen :) |
Re: User aus DB kicken
Zitat:
Wenn du den Server von SuperServer (1 thread pro session) auf ClassicServer (1 Prozess pro Session) umstellst, solltest du genau den Prozess abschießen können. Aber wie gesagt: dieses Problem gäbe es in einem vernünftigen mehrschichtigen Design nicht. ;) |
Re: User aus DB kicken
Zitat:
Außerdem steht die 3 als Version dabei. Und solange man diese weiter nach hinten und Zwischenversionen mit Post3 Features als 2.x Features dazwischen schiebt wird es auch noch eine Weile dauern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 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