PDA

Vollständige Version anzeigen : Prozeduren im Hintergrund laufen lassen


DarkmanX
23.03.2006, 11:48
Hallo an alle Wissenden,

Vielleicht wisst ihr Rat...

Ich habe eine Access Datenbank die von mehreren Usern benutzt wird. Die Daten werden jeweils lokal auf den PCs der User in Tabellen gespeichert.

Das FrontEnd und die Tabellen befinden sich in derselben mde-Datei.

Dann gibt es noch eine mdb-Datei mit der gleichen Tabellenstruktur, die auf dem Server liegt. Alle 2 Minuten gleicht Access die lokalen Daten mit der mdb-Datei auf dem Server ab. Soweit funktioniert alles.

Nun habe ich aber das Problem, dass die Tabellen natürlich immer größer werden und die Abgleichzeit immer länger wird. Das dauert zur Zeit bis zu 30 sekunden. In der Zeit stoppt Access alles und man muss warten bis die Prozedur fertig ist.

Nun meine Frage: Kann man die Prozedur, die den ServerAbgleich durchführt, im Hintergrund laufen lassen, so dass der User kaum noch was davon mitbekommt?

Ich hoffe mein Problem soweit verständlich geschildert zu haben.

Besten Dank für Antworten
Pluton

a0053
23.03.2006, 13:35
Hallo,

da sehe ich keine Möglichkeit außer eine 3. Access-Datenbank zu erstellen, die dann den Abgleich übernimmt und dann z.B. als geplanter Task läuft und mittels Schaltfläche/Timer aus Deiner lokalen MDE gestartet wird (den Hintergrund "liefert" dann Windows).

Aber: Warum machst Du überhaupt den Abgleich und linkst die Tabelle der Server-MDB nicht in die lokale MDE rein?

Gruß,
Carsten

DarkmanX
23.03.2006, 15:22
Das hatte ich schon versucht, leider lief die ganze Anwendung dann ziemlich langsam. Denn bei jeder Aktion, die der User ausführt, müsste dann auf die Datei auf dem Server zugegriffen werden.

Gibts noch andere Alternativen außer die Lösung mit der dritten Datei?

MaTock
23.03.2006, 15:31
Wennn ich dich richtig verstanden habe ist die Verbindung Server-Client zu lahm" um die DB direkt zu verlinken oder?

Mußt du den abgleich alle 2 minuten fahren?

wäre ja höchstens auch denkbar, dass beim Schließen der DB automatisch ein Abgleich gefahren wird und sonst quasi so unter der Zeit zwischen öffnen und schließen steuert der User den Abgleich selber mit nem Syncronisieren-Button (den kann er anklicken bevor er z.B. zum Rauchen raus muß :grins: ) ....

Greez
MaTock

DarkmanX
23.03.2006, 16:17
Das geht leider nicht.

Alle User müssen ziemlich zeitnah auf aktuelle Daten zugreifen können.
Da der Server wirklich lahm ist, bleibt nur die Möglichkeit regelmäßig ein Backup laufen zu lassen. Meist sind selbst die 2 Minuten schon zu lange.

a0053
24.03.2006, 16:03
Wenn Du Aktualität brauchst wirst Du ums verlinekn eigentlich nicht herumkommen.

Ich habe Projekte draußen, in denen die Anwendung in FE und BE geteilt ist, so dass das BE nur die Daten enthält und das FE sämtliche Tabellen des BE heringelinkt hat. Da greifen bis zu 10 User gleichzeitig drauf zu. Die Performance ist grundsätzlich zufriedenstellend, komplizierte Abfragen brauchen halt was...
Inzwischen wird meinem Kunden das etwas zu langsam, aber die BE-Datenbank hat auch schon knapp 80 MB.

Wenn bei verlinkten Tabellen die Performance zu wünschen übrig lässt, ist oft nicht der Server auf dem die Daten liegen das Problem, sondern die Netzlast. Hier kann durch Optimieren der Abfragen etwas herausgeholt werden, auch eine Netzwerkanalyse bringt oft was (z.B. wird durch schlechte Kabel in einem 100Mbit-Netz nicht die volle Übertragungsrate erreicht).

Wenn Du alles "normale" versucht hast und die Performance Dir nicht genügt gibt es nur zwei Auswege:
a) Umstieg auf SQL-Server bei der Datenhaltung
b) Setz einen Windows Terminal-Server auf. Dann arbeiten keine Clients nicht lokal sondern sind nur "Hostglotzen". Dein Gewinn dabei: massiv reduzierte Netzlast (da alles lokal gerechnet wird), zentrale Administration. Nachteil: Lizenzkosten.

Gruß,
Carsten