![](https://seccdn.libravatar.org/avatar/4fbfddd7fdf1e37a5d87924db44b3c49.jpg?s=120&d=mm&r=g)
Hallo Liste, wir haben eine ACCESS 2.0 Backend DB die zu einem Frontend auf diversen Clients gelinkt ist. Das Backend liegt auf einem Linux 9.0 server ,clients waren bisher "echte" Win98 Rechner die ünber Samba connected haben. Das lief über Jahre stabil. Nun habe ich etliche clients auf Linux umgestellt und --um ACCESS 2.0 laufen zu lassen-- Win4Lin installiert. Die clients sind nun unter Linux zum Server gemounted, damit erscheinen die Backend DB's für ACCESS 2.0 im Ordner c:\daten, also scheinbar lokal. (In Wirklichkeit natürlich /home/username/win/daten) Seit nun über die Linux-clients auf die DB zugegriffen wird, crashed die DB reglemässig--leider aber nicht so regelmässig, das klar ist woran es liegt. Fakt ist aber ,das --solange "echte" Windows Rechner auf das Backend zugreifgen "Ruhe" ist. Worin liegt der Unterschied ob nun ein Linux /Win4Lin Rechner auf die DB schreibt ? Irgendwas am file-system ? Irgend ein anderes "handling" des Netzwerkes ? Ich habe die Backend DB's lokal auf die Linux Platte getan, und dann ist auch Ruhe. Das Problem ergibt sich beim Schreiben übers Netzwerk. Ich habe die "korrupte" DB mit ACCESS 2.o zu reparieren versucht und erhalte Meldungen wie : "...ein oder mehrere Datensätze von MSysObjekts (MSysColums,Indexes, ACE's) wurden gelöscht...." Insgesamt frustrierend, da ich gehofft hatte auf dies Weise die Windows clients endlich loszuwerden. Leider können wir auf die ACCESS DB nichrt verzichten, ist eine Spezailanfertigung, und gibts leider nicht als MySQL (Das wäre ein Traum :- ) Frank
![](https://seccdn.libravatar.org/avatar/b3a2d66ca326f5e6e364da65631fb41f.jpg?s=120&d=mm&r=g)
Frank Thiel wrote:
Hallo Liste, wir haben eine ACCESS 2.0 Backend DB die zu einem Frontend auf diversen Clients gelinkt ist. Das Backend liegt auf einem Linux 9.0 server ,clients waren bisher "echte" Win98 Rechner die ünber Samba connected haben. Das lief über Jahre stabil. Nun habe ich etliche clients auf Linux umgestellt und --um ACCESS 2.0 laufen zu lassen-- Win4Lin installiert. Die clients sind nun unter Linux zum Server gemounted, damit erscheinen die Backend DB's für ACCESS 2.0 im Ordner c:\daten, also scheinbar lokal. (In Wirklichkeit natürlich /home/username/win/daten)
Ich habe dir Erfahrung gemacht, dass ACCESS Datenbanken auf Server shares bei Netzstörungen leicht kaputt gehen. Wie hast du die shares gemounted ? NFS oder SMB oder was ? Hast du überlegt die Datenbank auf eine echte Serverdatenbank zu portieren z.B. postgresql ? mfg K. Müller
![](https://seccdn.libravatar.org/avatar/4fbfddd7fdf1e37a5d87924db44b3c49.jpg?s=120&d=mm&r=g)
Hallo Kasimir, Am Freitag, 2. Juli 2004 23:27 schrieb Kasimir Müller:
Frank Thiel wrote:
Hallo Liste, wir haben eine ACCESS 2.0 Backend DB die zu einem Frontend auf diversen Clients gelinkt ist. Das Backend liegt auf einem Linux 9.0 server ,clients waren bisher "echte" Win98 Rechner die ünber Samba connected haben. Das lief über Jahre stabil. Nun habe ich etliche clients auf Linux umgestellt und --um ACCESS 2.0 laufen zu lassen-- Win4Lin installiert. Die clients sind nun unter Linux zum Server gemounted, damit erscheinen die Backend DB's für ACCESS 2.0 im Ordner c:\daten, also scheinbar lokal. (In Wirklichkeit natürlich /home/username/win/daten)
Ich habe dir Erfahrung gemacht, dass ACCESS Datenbanken auf Server shares bei Netzstörungen leicht kaputt gehen.
Ja, das stimmt. Aber als die clients "echte" Win98 Kisten waren, passierte das 1x pro Jahr, und die DB lies sich sofort reparieren. Nun passiert es ständig, schlimmer noch: die DB ist irreparabel, Daten futsch, wir müssen dann eine Sicherung nehmen !
Wie hast du die shares gemounted ? NFS oder SMB oder was ?
NFS gemounted
Hast du überlegt die Datenbank auf eine echte Serverdatenbank zu portieren z.B. postgresql ?
Dafür habe ich wohl keine Kenntnisse, da müssten die doch umgeschrieben werden oder ?
mfg
K. Müller
Frank
![](https://seccdn.libravatar.org/avatar/b3a2d66ca326f5e6e364da65631fb41f.jpg?s=120&d=mm&r=g)
Frank Thiel wrote:
Hallo Kasimir,
Am Freitag, 2. Juli 2004 23:27 schrieb Kasimir Müller:
Frank Thiel wrote:
Hallo Liste, wir haben eine ACCESS 2.0 Backend DB die zu einem Frontend auf diversen Clients gelinkt ist. Das Backend liegt auf einem Linux 9.0 server ,clients waren bisher "echte" Win98 Rechner die ünber Samba connected haben. Das lief über Jahre stabil. Nun habe ich etliche clients auf Linux umgestellt und --um ACCESS 2.0 laufen zu lassen-- Win4Lin installiert. Die clients sind nun unter Linux zum Server gemounted, damit erscheinen die Backend DB's für ACCESS 2.0 im Ordner c:\daten, also scheinbar lokal. (In Wirklichkeit natürlich /home/username/win/daten)
Ich habe dir Erfahrung gemacht, dass ACCESS Datenbanken auf Server shares bei Netzstörungen leicht kaputt gehen.
Ja, das stimmt. Aber als die clients "echte" Win98 Kisten waren, passierte das 1x pro Jahr, und die DB lies sich sofort reparieren. Nun passiert es ständig, schlimmer noch: die DB ist irreparabel, Daten futsch, wir müssen dann eine Sicherung nehmen !
Wie hast du die shares gemounted ? NFS oder SMB oder was ?
NFS gemounted
Versuch mal den Parameter "sync" in der fstab, sorgt dafür, daß Änderungen sofort weggeschieben und nicht gepuffert werden.
Hast du überlegt die Datenbank auf eine echte Serverdatenbank zu portieren z.B. postgresql ?
Dafür habe ich wohl keine Kenntnisse, da müssten die doch umgeschrieben werden oder ?
Die Datenbankstruktur und die Daten müssen natürlich portiert werden. Die Frontends können per ODBC angebunden werden. Zumindest mit ACCESS97 aufwärts. Ob für das 16 bit ODBC Treiber da sind, weiss ich nicht. An den Frontends muss die Verwendung von "Zähler"-Feldern überprüft werden, da dies mit SQL-Datenbanken anders funktioniert (ACCESS legt den Zähler an, wenn ein neuer Datensatz geöffnet wird). Die "Counter"-Felder in SQL-Datenbanken setzen den Zähler beim Speichern des Datensatzes. Das kann in Formularen mit 1:n Beziehungen Probleme machen. mfg K. Müller
![](https://seccdn.libravatar.org/avatar/53a6cf42dedfb6fc1a0ab35224022f75.jpg?s=120&d=mm&r=g)
Hallo Frank, Du hast nicht erwähnt, um was für ein Linux es sich hier handelt. Wenn ich hier richtig in der Annahme liege, dass es sich um eine SuSE 9.1 handelt könnte es sich durchaus um ein verstecktes UTF-8 Problem handeln (auch wenn ich mich jetzt sehr weit aus dem Fenster lehne...) Vielleicht solltest Du auch mal in diese Richtung forschen falls es sich um die o.g. 9.1 handelt. Nach der Umstellung hatte ich auch nfs-Probleme und die XP-Backups waren nicht mehr lesbar bzw. verstümmelt. Bis ich raus hatte, dass es sich auch hierbei um UTF-8 Probleme handelte hatte ich schon ein paar graue Haare mehr und ein paar GB Backups weniger. Mit den (mittlerweile in grosser Zahl) verfügbaren Lösungsansätzen hab ich das jetzt aber in den Griff bekommen. Gruss Mario
![](https://seccdn.libravatar.org/avatar/1da905d2971ff1653573089cd8b860ae.jpg?s=120&d=mm&r=g)
Am Freitag, 2. Juli 2004 23:08 schrieb Frank Thiel:
Seit nun über die Linux-clients auf die DB zugegriffen wird, crashed die DB reglemässig--leider aber nicht so regelmässig, das klar ist woran es liegt.
teste mal, ob es crasht wenn mehre Clients gleichzeitig darauf zugreifen oder auch wenn es nur ein Client ist.
Fakt ist aber ,das --solange "echte" Windows Rechner auf das Backend zugreifgen "Ruhe" ist.
Worin liegt der Unterschied ob nun ein Linux /Win4Lin Rechner auf die DB schreibt ? Irgendwas am file-system ?
Ich kenn zwar das Win4Lin nicht, aber es scheint so zu sein, daß da etwas fehlt, was den Clients ermöglicht Datensätze zu sperren oder so ... Am Filesystem kann es auf keinen Fall liegen. Es ist etwas, das innerhalb von Access selber passiert. So verlockend es manchmal sein kann so eine Access DB als Backend zu benutzen, es bleibt eine Desktop DB und ist kein realer Ersatz zu einer Server DB, die solche Probleme ausschließt.
Irgend ein anderes "handling" des Netzwerkes ? Ich habe die Backend DB's lokal auf die Linux Platte getan, und dann ist auch Ruhe.
Dann macht der Multiuser-Zugriff Probleme.
Leider können wir auf die ACCESS DB nichrt verzichten, ist eine Spezailanfertigung, und gibts leider nicht als MySQL (Das wäre ein Traum :- )
Nun im Backend sollte nichts drin sein, was nicht auf z.B. MySQL zu übertragen geht. Aber Access 2.0 ist mittlerweile so alt, daß es sich lohnen würde über eine komplette Migration auf eine Server DB nachzudenken. ;-) Gruß Zlatko
![](https://seccdn.libravatar.org/avatar/8e8dd87473e7c39ca4bf35e7172c34f8.jpg?s=120&d=mm&r=g)
Am Freitag, 2. Juli 2004 23:08 schrieb Frank Thiel:
Am Freitag, 2. Juli 2004 23:27 schrieb Kasimir Müller:
Wie hast du die shares gemounted ? NFS oder SMB oder was ?
NFS gemounted
Am Freitag, 2. Juli 2004 23:47 schrieb Zlatko Kobetic:
Ich kenn zwar das Win4Lin nicht, aber es scheint so zu sein, daß da etwas fehlt, was den Clients ermöglicht Datensätze zu sperren oder so ... Am Filesystem kann es auf keinen Fall liegen. Es ist etwas, das innerhalb von Access selber passiert.
Der Fehler liegt einmal daran, das NFS gemountet wird, Samba händelt das etwas anders. Zum anderen ist Access eine Desktop-Datenbank und somit eigentlich nicht multiprozess fähig. Hier eine kurzanleitung um AccessDB-Anwendungen zu einer richtigen DB-Anwendung zu machen: Inastallier dir die Firebird (Datenbank) [ http://www.firebirdsql.org], sie ist der GPL-Pedant zur Interbase. Dann besorge dir ein Migrationstool um AccessDBs nach Interbase zu migrieren. Du findest Freewaretools entweder auf den Borlandseiten oder auf der Firebirdsql-Seite. Jetzt gibt es zwei Möglichkeiten: 1. Die Anwendung ist keine Access-Anwendung, sondern benutzt über die odbc-Schnittstelle die Access-Datei zur Datenspeicherung, dam nn kannst du die Anwendung direkt auf die Firebird über odbc zugreifen lassen. (Anwendung ist in Delphi, oder plain VB etc. geschrieben) 2. Die Anwendung ist eine Access-Anwendung (braucht Access-Runtime), dann legst du einen Access-DB-File (.mdb) an und importierst die einzelnen Tabellen über odbc von der Firebird in den AccessDb-File. A, besten legst du für jeden User einen eigenen mdb-File an. In beiden Fällen hast du nun einen eine echt Client-Server-Geschichte und die Firebird übernimmt als Server das parallele Zugriffshandling. hth cu Gerald
![](https://seccdn.libravatar.org/avatar/4fbfddd7fdf1e37a5d87924db44b3c49.jpg?s=120&d=mm&r=g)
Hallo Gerald, Am Samstag, 3. Juli 2004 01:12 schrieb Gerald Goebel:
Am Freitag, 2. Juli 2004 23:08 schrieb Frank Thiel:
Am Freitag, 2. Juli 2004 23:27 schrieb Kasimir Müller:
Wie hast du die shares gemounted ? NFS oder SMB oder was ?
NFS gemounted
Am Freitag, 2. Juli 2004 23:47 schrieb Zlatko Kobetic:
Ich kenn zwar das Win4Lin nicht, aber es scheint so zu sein, daß da etwas fehlt, was den Clients ermöglicht Datensätze zu sperren oder so ... Am Filesystem kann es auf keinen Fall liegen. Es ist etwas, das innerhalb von Access selber passiert.
Der Fehler liegt einmal daran, das NFS gemountet wird, Samba händelt das etwas anders. Zum anderen ist Access eine Desktop-Datenbank und somit eigentlich nicht multiprozess fähig.
das probiere ich auf jeden Fall aus. smbmount "\\\\servername\\freigabe /ordner funzt...gibt es da noch Parameter die die Sache besser machen ? und: falls dies das Problem löst oder zumindest deutlich bessert, wie kann ich den client dazu bringen beim Hochfahren das automatisch auszuführen ? Einbau in irgendein Skript, das beim Start ausgeführt wird...aber welches ?
Hier eine kurzanleitung um AccessDB-Anwendungen zu einer richtigen DB-Anwendung zu machen:
Inastallier dir die Firebird (Datenbank) [ http://www.firebirdsql.org], sie ist der GPL-Pedant zur Interbase. Dann besorge dir ein Migrationstool um AccessDBs nach Interbase zu migrieren. Du findest Freewaretools entweder auf den Borlandseiten oder auf der Firebirdsql-Seite.
Jetzt gibt es zwei Möglichkeiten: 1. Die Anwendung ist keine Access-Anwendung, sondern benutzt über die odbc-Schnittstelle die Access-Datei zur Datenspeicherung, dam nn kannst du die Anwendung direkt auf die Firebird über odbc zugreifen lassen. (Anwendung ist in Delphi, oder plain VB etc. geschrieben)
2. Die Anwendung ist eine Access-Anwendung (braucht Access-Runtime), dann legst du einen Access-DB-File (.mdb) an und importierst die einzelnen Tabellen über odbc von der Firebird in den AccessDb-File. A, besten legst du für jeden User einen eigenen mdb-File an.
In beiden Fällen hast du nun einen eine echt Client-Server-Geschichte und die Firebird übernimmt als Server das parallele Zugriffshandling.
Vielen Dank!!! ich werde das (und weiter unten gibt es noch einen Vorschlag von Kasimir) auf jeden Fall an den Author der ACCESS DB weitergeben, der sicherlich auch an einem "echten" Client-Server System interessiert ist.
hth
cu Gerald
FRank
![](https://seccdn.libravatar.org/avatar/164cf95954d03f904b9c34264d7ec5c3.jpg?s=120&d=mm&r=g)
Hallo, Frank Thiel schrieb am Samstag, 3. Juli 2004 um 09:52:
smbmount "\\\\servername\\freigabe /ordner funzt...gibt es da noch Parameter die die Sache besser machen ? und: falls dies das Problem löst oder zumindest deutlich bessert, wie kann ich den client dazu bringen beim Hochfahren das automatisch auszuführen ? Einbau in irgendein Skript, das beim Start ausgeführt wird...aber welches ?
/etc/samba/smbfstab - Beispiel steht in der Datei drin. Gruss, Andreas
participants (6)
-
Andreas Ahlenstorf
-
Frank Thiel
-
Gerald Goebel
-
Kasimir.Mueller@t-online.de
-
Mario van der Linde
-
Zlatko Kobetic