![]() |
Arbeiten mit Datenbanken im Netzwerk
Hallo Zusammen, ich habe ein Problem:
Ich habe eine Kassenanwendung geschrieben und diese dann Netzwerkfähig gemacht dies funktioniert alles auch ganz gut. Aber wenn ich mein Programm, welches nicht im Netz sondern lokal arbeitet, beende und meinen PC herunterfahre dann hängt sich natürlicherweise die Anwendungen die auf die Datenbanken des Rechners zugreifen auf. z.B.: (Rechner 1) dort läuft das Programm Lokal und die Datenbanken liegen auf diesem Rechner (Rechner 2) dort wird das Netzwerk initialisiert und das Programm greift auf die Datenbanken auf Rechner 1 zu . Nun mein Problem wird Rechner 1 heruntergefahren und die Anwendung läuft aber noch auf Rechner 2 so hängt sich Rechner 2 auf und nur noch ein Abbruch mit dem Taskmanger kann dann nur noch das Programm beenden. Wie kann ich auf Rechner eins überprüfen das noch eine Anwendung auf die Datenbanken auf Rechner 1 zugreift oder wie kann ich überprüfen ob noch eine Instanz der Anwendung im Netzwerk Aktiv ist. Ich habe mich vielen Foren schon durchgewühlt aber konnte nichts finden. Ein kleines Beispiel wäre einfach Toll. Gruß Orion3000 |
Re: Arbeiten mit Datenbanken im Netzwerk
das programm könnte sich verbinden, und beim beenden wieder abmelden.
so kann das programm 1 dann gucken, es sind noch soundso viele clients da... also nicht einfach auf die db sondern vorher meldung (zb mit indy) an rechner 1 "hallo" und am ende "Tschüss" |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Datenbanken" verschoben.
In der Sparte "Neue Beiträge zur Code...." bitte keine Fragen posten. Hier sollen nur fertige Lösungen rein. Danke ;-) |
Re: Arbeiten mit Datenbanken im Netzwerk
Was für eine Datenbank ist das denn? Viele Datenbanken bieten die Option über bestimmte Wege herauszufinden wieviele mit der DB verbunden sind. Bsp. in der MSDE gibt es eine StoredProcedure dafür.
|
Re: Arbeiten mit Datenbanken im Netzwerk
Hallo Zusammen, einmal Danke für Eure prompte Hilfe,
ich arbeite mit Paradox. in der Delphihilfe habe ich nichts dergelichen gefunden! Ich muß eigentlich nur wissen ob noch auf den Lokalenrechner von einem anderen Programm auf die Datenbanken zugegriffen wird- Gruß Orion3000 |
Re: Arbeiten mit Datenbanken im Netzwerk
Dann würde ich dir den Tipp von glkgereon empfehlen. Leg eine Extra Tabelle an.
Tabelle: UserID | Timestamp --------------------- Szenario Client-Server -> Two-Tier-Technik Beim verbinden mit der DB schreibst du den User in die Tabelle. Beim Beenden löschst du ihn Ab und zu solltest du dann mit nem Systemprogramm nachschauen ob einen User gibt dessen Timestamp schon bissl sehr alt ist. Ist das der Fall könntest du (vorrausgesetzt du hast soetwas implementiert) nachfragen ob er noch Online ist. Ist er es nicht dann löschst du ihn aus der Tabelle. Dies ist für den Fall das mal ein Programm nicht über den offiziellen Weg beendet wurde. Szenario -> n-Tier-Technik Hier sind Verbindungen nur auf kurze Dauer angelegt. Sie werden nur geöffnet und geschlossen,wenn sie benötigt werden und nicht zum Programmstart und Programmende. Ist hier der Timestamp relativ alt (du weißt ja ungefähr welche Daten bewegt werden und wielange es dann dauert bis sie beim Client sind.) kannst du den User ohne Nachfrage löschen. Achja die Ermittlung ob mehr als einer mit der DB verbunden ist, läuft dann über Ergebnis von Select Count(UserID) FROM TabelleX If Ergebnis > 1 then ShowMessage('Es sind noch Benutzer mit der DB verbunden') |
Re: Arbeiten mit Datenbanken im Netzwerk
Liste der Anhänge anzeigen (Anzahl: 1)
hier ein uralt-programm, liest aus der der .net die aktiven (!) verbindungen aus.
einfach die com-datei in das verzeichnis mit der pdoxusers.net datei kopieren und im DOS (es ist von 93!!) starten.... :-) thomas |
Re: Arbeiten mit Datenbanken im Netzwerk
Hallo Zusammen,
ich habe das Problemm gelöst, und zwar so: Jedesmal wenn das Programm Lokal gestartet wird dann überprüft das Programm ob es Lokal oder im Netz arbeitet. Wenn es im Netz arbeitet so wird eine Inidatei erstellt in der sich dann alle anderen User eintragen müssen. Bevor das Lokale Programm beendet wird überprüft dieses ob noch weitere User auf die Datenbanken zugreifen. Wenn ja dann wird ein Hinweisdialog angezeigt das erst alle anderen User ihr Programm Beenden müssen. Wenn ein Programm im Netz arbeitet und beendet wird so wird der Eintrag aus der Inidatei gelöscht. Ist vieleicht nicht die schönste Lösung aber etwas anderes habe ich nirgends gefunden. Gruß Orion3000 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 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