Discussion:
Citrix und BDE
(zu alt für eine Antwort)
Jürgen Bittner
2005-06-08 12:21:19 UTC
Permalink
Hallo,

eine Anwendung mit dbase - Datenbanken macht unter Citrix Probleme.

Die Anwendung ist vor 10 Jahren unter Dekphi 1 entstanden und läuft
stabil. Aktuell wird Sie mit Delphi 5 erstellt. Deshalb habe ich ein
Wechsel des DB-Systems bisher nicht vorgenommen.

Ich habe jetzt ein Problem unter Citrix:

Wenn zwei Anwender auf die gleiche Datenbank zugreifen, sieht der
Anwender die Änderungen, die der andere durchführt, nicht. Wenn beide
die Datenbank verlassen, wird die Änderung (neue Datensätze anlegen oder
ändern) nicht immer in die Datenbank geschrieben. Scheinbar werden nur
die Änderungen des letzten Benutzers eingetragen. Teilweise wird die
Datenbank dann zerstört.

Ich habe den Eindruck als wenn die Datenbank komplett in den Client im
Speicher geladen wird, und danach komplett zurück geschrieben wird.

Unter Windows NT bis XP auf einen Windows- oder Linux-Server gibt es
keine Probleme.

Hat einer eine Idee?

mfg

Jürgen Bittner
Willmar Heinrich
2005-06-08 13:00:09 UTC
Permalink
Hallo Jürgen,

da dBase nicht terminalserverfähig ist, solltet Ihr schnellstens umstellen
auf eine richtige SQL-Datenbank. Habe eine Applikation mit ADO auf MS
SQL-Server auf Terminalserver laufen, problemlos.

Willmar
Post by Jürgen Bittner
Hallo,
eine Anwendung mit dbase - Datenbanken macht unter Citrix Probleme.
...
Dirk Stein
2005-06-08 13:14:00 UTC
Permalink
Post by Jürgen Bittner
Hallo,
eine Anwendung mit dbase - Datenbanken macht
unter Citrix Probleme.
Ich habe den Eindruck als wenn die Datenbank
komplett in den Client im Speicher geladen
wird, und danach komplett zurück geschrieben
wird.
Ja, ist so.
Zudem ist dBase eine "Flat-Database" ,
welche von hause aus nicht Multiuserfähig!

Sicher hast Du die BDE oder Applikation so
eingestellt das diese direkt
zurückschreibt(flush!) und nicht cacht.

IMHO, ladet das Metaframe das Profil als Session
in den Speicher. Erst mit beenden der Applikation
oder beim beenden der Citrix-Session wird das
Profil zurückgeschrieben.
--
mfg
Dirk Stein

Schon eingetragen? http://www.delphiuser.de.vu
- Lang ist der Weg durch Lehren, kurz und wirksam
durch Beispiele.
(Seneca, röm. Dichter u. Phil., 4 v. Chr. - 65
n.Chr.) -
Günter Kieninger
2005-06-08 20:56:51 UTC
Permalink
Post by Dirk Stein
Zudem ist dBase eine "Flat-Database" ,
welche von hause aus nicht Multiuserfähig!
Das kann man so nicht stehen lassen. Mit den geeigneten Treibern (zB
Clipper unter DOS oder Apollo mit Delphi) kann man durchaus voll
funktionsfähige Multiuserfähige Programme mit DBF-Dateien erstellen.

Gruß aus den Bergen
Günter
Dirk Stein
2005-06-09 06:19:12 UTC
Permalink
Post by Günter Kieninger
Post by Dirk Stein
Zudem ist dBase eine "Flat-Database" ,
welche von hause aus nicht Multiuserfähig!
Das kann man so nicht stehen lassen. Mit den
geeigneten Treibern (zB Clipper unter DOS oder
Apollo mit Delphi) kann man durchaus voll
funktionsfähige Multiuserfähige Programme mit
DBF-Dateien erstellen.
Einspruch euer Ehren.
Der OP sprach von dBase und nicht von dbf.

Mit Topaz gab es sogar eine richtige
Multiuserplattform für dbf-Dateien, aber das war
hier nicht die Frage :-)
--
mfg
Dirk Stein

Schon eingetragen? http://www.delphiuser.de.vu
- Lang ist der Weg durch Lehren, kurz und wirksam
durch Beispiele.
(Seneca, röm. Dichter u. Phil., 4 v. Chr. - 65
n.Chr.) -
Günter Kieninger
2005-06-09 12:57:35 UTC
Permalink
Post by Dirk Stein
Einspruch euer Ehren.
Der OP sprach von dBase und nicht von dbf.
Schon? Er schrieb doch von 'dbase - Datenbanken' und 'Delphi 5'. Also
meinte er schon DBF und nicht dBase.
Gutachter oder Einspruch abgewiesen?

Gruß aus den Bergen
Günter
Jürgen Bittner
2005-06-12 15:08:32 UTC
Permalink
Post by Dirk Stein
Post by Jürgen Bittner
Hallo,
Ich habe den Eindruck als wenn die Datenbank
komplett in den Client im Speicher geladen
wird, und danach komplett zurück geschrieben
wird.
Ja, ist so.
Zudem ist dBase eine "Flat-Database" ,
welche von hause aus nicht Multiuserfähig!
Sicher hast Du die BDE oder Applikation so
eingestellt das diese direkt
zurückschreibt(flush!) und nicht cacht.
Richtig
Post by Dirk Stein
IMHO, ladet das Metaframe das Profil als Session
in den Speicher. Erst mit beenden der Applikation
oder beim beenden der Citrix-Session wird das
Profil zurückgeschrieben.
Wie verhalten sich dann andere DBs oder SQL-Server? Habe ich dann den
gleichen Effekt?

Jürgen
Joachim Duerr
2005-06-13 07:11:01 UTC
Permalink
Jürgen Bittner schrieb in
Post by Jürgen Bittner
Wie verhalten sich dann andere DBs oder SQL-Server? Habe ich dann den
gleichen Effekt?
dat is halt BDE. Mit den meisten anderen Treibern wirst Du weniger
Probleme haben.
--
Joachim Dürr
Advantage Database Server Support Lead (EMEA)
Advantage[at]extendsys.de
Joachim Pimiskern
2005-06-08 14:49:34 UTC
Permalink
Hallo,
Post by Jürgen Bittner
Wenn zwei Anwender auf die gleiche Datenbank zugreifen, sieht der
Anwender die Änderungen, die der andere durchführt, nicht. Wenn beide
die Datenbank verlassen, wird die Änderung (neue Datensätze anlegen
oder ändern) nicht immer in die Datenbank geschrieben. Scheinbar
werden nur die Änderungen des letzten Benutzers eingetragen.
evtl.
DbiSaveChanges(Table1.Handl­e);
aufrufen.
Post by Jürgen Bittner
Teilweise wird die Datenbank dann zerstört.
Wie meinen? Korrupte Dateien? Oder nur
Inkonsistenzen? Letzteres wäre ein Fall
für Transaktionsklammerung.

Grüße,
Joachim
Jürgen Bittner
2005-06-12 15:11:46 UTC
Permalink
Post by Jürgen Bittner
Hallo,
Post by Jürgen Bittner
Wenn zwei Anwender auf die gleiche Datenbank zugreifen, sieht der
Anwender die Änderungen, die der andere durchführt, nicht. Wenn beide
die Datenbank verlassen, wird die Änderung (neue Datensätze anlegen
oder ändern) nicht immer in die Datenbank geschrieben. Scheinbar
werden nur die Änderungen des letzten Benutzers eingetragen.
evtl.
DbiSaveChanges(Table1.Handl­e);
aufrufen.
Hilft nichts. Refresh auch nicht.
Post by Jürgen Bittner
Post by Jürgen Bittner
Teilweise wird die Datenbank dann zerstört.
Wie meinen? Korrupte Dateien? Oder nur
Inkonsistenzen? Letzteres wäre ein Fall
für Transaktionsklammerung.
Grüße,
Joachim
Defekte Indexdateien. Wenn User 1 Daten ändert und vor User 2 beendet,
stehen nur die Daten die User 2 sah in der DB.

Jürgen
Jürgen Bittner
2005-06-12 16:47:32 UTC
Permalink
Hallo,

ich mir habe jetzt einmal den Microsoft Terminalserver installiert. Das
Problem liegt schon hier. Es ist so, dass wechselseitige Änderungen
nicht übernommen werden. Wer zuletzt speichert, überschreibt alle
Änderungen die andere Benutzer vorgenommen haben. Keiner sieht die
Änderungen des andern.

Erstaunlicherweise wird die Sperre einer kompletten Datenbank (exclusive
:= True) wenn zwei User in der Datenbank sind, nicht zugelassen. Ich
werde die DB jetzt beim Programmstart exklusiv öffnen. Dann kann im
Moment eben nur einer rein. Ich muss nur schnell etwas für den Kunden
machen.

Ich werde die BDE sterben lassen. Jetzt suche ich Alternativen:
Die meisten benutzen eine Version für 1 Benutzer (70%). Denen kann ich
ja jetzt keinen teuren SQL-Server zumuten.

Ich habe bisher gesehen:
Firebird: Gibt es auch als embedded Server. So das ich beide Gruppen
kostenlos bedienen könnte. Angeblich funktioniert er nicht auf einem
Netzlaufwerk. Die Daten liegen aber meistens auf einen Server. Weis
jemand mehr?

Advantage Local Server: Leider kein Download und auch keine Infos
gefunden. Geht er mit 2 Usern im Netz auf einem Terminalserver?

FlasFiler: Lohnt sich das überhaupt noch, darauf umzustellen?

Der Kunde sagte mir ein anderes Programm würde den MSDN von Microsoft
einsetzen. Das sei der SQL-Server 2000. Hat das einen Sinn?

Was gibt es noch?
Jürgen
.
Christian Gütter
2005-06-12 18:22:18 UTC
Permalink
Hallo Jürgen,
Post by Jürgen Bittner
Firebird: Gibt es auch als embedded Server. So das ich beide Gruppen
kostenlos bedienen könnte. Angeblich funktioniert er nicht auf einem
Netzlaufwerk. Die Daten liegen aber meistens auf einen Server. Weis
jemand mehr?
Stimmt, die Datenbank darf nicht auf einem Netzlaufwerk liegen.
Wenn der Kunde einen Server hat, dann sollte man auf diesem den Firebird
Server installieren. Benötigt nur ein paar MB Plattenspeicher und macht
sich im RAM auch nicht besonders breit. Und der Administrationsaufwand
ist gleich Null.

Auf einem Terminalserver müsste auch Embedded funktionieren, aber dann
halt nur für einen User.
Post by Jürgen Bittner
Advantage Local Server: Leider kein Download und auch keine Infos
gefunden. Geht er mit 2 Usern im Netz auf einem Terminalserver?
Mit ADS kenne ich mich nicht so gut aus.
Post by Jürgen Bittner
FlasFiler: Lohnt sich das überhaupt noch, darauf umzustellen?
Ich glaube eher nicht.
Post by Jürgen Bittner
Der Kunde sagte mir ein anderes Programm würde den MSDN von Microsoft
einsetzen. Das sei der SQL-Server 2000. Hat das einen Sinn?
Der Kunde meinte wahrscheinlich MSDE. Das ist sozusagen ein abgespeckter
SQL-Server ohne grafische Tools und mit einigen Einschränkungen, z. B.
dürfen Datenbanken nur maximal 2 GB groß werden.
Die MSDE läuft als Dienst und bringt einige Kommandozeilentools mit, mit
denen Administrationsaufgaben durchgeführt werden können. Man kann aber
auch grafische Tools von Drittanbietern verwenden.

Ich würde zu Firebird tendieren, wobei die MSDE auch recht ordentlich
funktioniert. Zum Thema ADS können sicherlich noch einige andere Leute
aus dieser Newsgroup Erhellendes beitragen.


Gruß,

Christian
news.individual.de
2005-06-12 19:16:14 UTC
Permalink
Post by Jürgen Bittner
Die meisten benutzen eine Version für 1 Benutzer (70%). Denen kann ich
ja jetzt keinen teuren SQL-Server zumuten.
Nicht jeder SQL-Server ist teuer.
Post by Jürgen Bittner
Firebird: Gibt es auch als embedded Server. So das ich beide Gruppen
kostenlos bedienen könnte. Angeblich funktioniert er nicht auf einem
Netzlaufwerk. Die Daten liegen aber meistens auf einen Server. Weis
jemand mehr?
Auf einem Server liegen und auf einer fremden Netzwerkfreigabe liegen
ist ein Unterschied.
Post by Jürgen Bittner
Advantage Local Server: Leider kein Download und auch keine Infos
gefunden. Geht er mit 2 Usern im Netz auf einem Terminalserver?
FlasFiler: Lohnt sich das überhaupt noch, darauf umzustellen?
Da gibts den Nachfolger NexusDB.
Post by Jürgen Bittner
Der Kunde sagte mir ein anderes Programm würde den MSDN von Microsoft
einsetzen. Das sei der SQL-Server 2000.
Damit ist sicherlich MSDE gemeint, die kleine Version des MS SQL-Servers.
Post by Jürgen Bittner
Hat das einen Sinn?
Immer das gleiche Datenbanksystem, kleine oder große Umgebung, ist schon
von Vorteil.
Post by Jürgen Bittner
Was gibt es noch?
Viele. ADS, NexusDB, Firebird, MySQL, DBISAM, PostgreSQL, DB2, MS SQL,
Ingres, Interbase, Sybase, Oracle, Access, MaxDB, BTRieve, Informix, ...


Martin
Ralf Mimoun
2005-06-12 19:16:47 UTC
Permalink
Moin!

Jürgen Bittner wrote:
...
Post by Jürgen Bittner
Die meisten benutzen eine Version für 1 Benutzer (70%). Denen kann ich
ja jetzt keinen teuren SQL-Server zumuten.
Beachte auch Dein Aufwand bei der Umstellung. Wenn Du exzessiv TTables
benutzt, wirst Du bei der Umstellung auf Queries unter Umständen einiges an
Zeit investiere müssen. Ach ja, bei der Auflistung hast Du DBISAM vergessen
:-)

...
Post by Jürgen Bittner
Der Kunde sagte mir ein anderes Programm würde den MSDN von Microsoft
einsetzen. Das sei der SQL-Server 2000. Hat das einen Sinn?
Nein, da MSDN das Microsoft Developer Network ist und keine DB-Engine :-)
Joachim Duerr
2005-06-13 07:37:06 UTC
Permalink
Jürgen Bittner schrieb in
Post by Jürgen Bittner
Advantage Local Server: Leider kein Download und auch keine Infos
gefunden.
Ist bei allen Windows und Linux Client Kits mit dabei.
Post by Jürgen Bittner
Geht er mit 2 Usern im Netz auf einem Terminalserver?
Darf nicht auf einer Middleware verwendet werden (Lizenzbestimmungen).
--
Joachim Dürr
Advantage Database Server Support Lead (EMEA)
Advantage[at]extendsys.de
Günter Kieninger
2005-06-14 05:57:16 UTC
Permalink
Post by Joachim Duerr
Darf nicht auf einer Middleware verwendet werden (Lizenzbestimmungen).
Was bedeutet das genau?

Gruß aus den Bergen
Günter
Jürgen Bittner
2005-06-14 06:57:51 UTC
Permalink
Guten Morgen,

gestern habe ich die Software so geändert, das nur noch einer das
Programm starten kann. Heute morgen höhre ich, das die Daten die gestern
eingegebne wurden, heute wieder verschwunden sind.

Das kann doch nicht am Datenbanksystem liegen, oder?

Ich bin ratlos!

Jürgen
Joachim Duerr
2005-06-14 06:59:20 UTC
Permalink
Post by Günter Kieninger
Post by Joachim Duerr
Darf nicht auf einer Middleware verwendet werden
(Lizenzbestimmungen).
Was bedeutet das genau?
Advantage Local Server nicht auf
- Terminalserver
- Webserver
- sonstiger Middleware, wie zB MobileObjects o.ä.

Remote Server (also der große Client/Server Bruder) ist von dieser
Einschränkung nicht betroffen.
--
Joachim Dürr
Advantage Database Server Support Lead (EMEA)
Advantage[at]extendsys.de
Günter Kieninger
2005-06-14 08:47:50 UTC
Permalink
Post by Joachim Duerr
Advantage Local Server nicht auf
- Terminalserver
- Webserver
- sonstiger Middleware, wie zB MobileObjects o.ä.
Das heißt für Terminalserver braucht man auf jeden Fall einen
vollständigne Server, auch wenn es nur zwei Benutzer wären? Gilt das
auch wenn wir den Terminalserver nur für Wartungsarbeiten einsetzen?
Post by Joachim Duerr
Remote Server (also der große Client/Server Bruder) ist von dieser
Einschränkung nicht betroffen.
Ich muß bei euren Produkten erstmal durchsteigen :)


Gruß aus den Bergen
Günter
Joachim Duerr
2005-06-14 09:03:44 UTC
Permalink
Post by Günter Kieninger
Das heißt für Terminalserver braucht man auf jeden Fall einen
vollständigne Server, auch wenn es nur zwei Benutzer wären? Gilt das
auch wenn wir den Terminalserver nur für Wartungsarbeiten einsetzen?
ja. Der Local Server ist auch technisch gesperrt (es gibt einen Fehler).
--
Joachim Dürr
Advantage Database Server Support Lead (EMEA)
Advantage[at]extendsys.de
Loading...