Multiuser Datenbank Komprimieren automatisch hilfe

Hallo Liebe Wer Weiß Was User,
ich bräuchte eure Hilfe nochmal :smiley:
Undzwar habe ich in meiner Firma eine Multiuser Datenbank (Access 2010) ohne FE u. BE diese Datenbank wächst ständig in unermessene und verlangsamt somit dem Umgang/Handlung mit der DB extrem.
Gibt es eine möglichkeit diese DB automatisch Komprimieren zulassen?
Den momentan muss ich immer durch das ganze Werk laufen und suchen wer die DB noch geöffnet hat, den Komprimieren kann ich nur wenn Exklusiven Zugriff auf die DB habe.

Hoffe ihr versteht mein Problem und könnt mir evtl. weiterhelfen.
Bis dahin vielen dank und schöne grüße aus dem sonnigen

Berlin

MFG
Fizzo361

Hallo,

Hoffe ihr versteht mein Problem und könnt mir evtl.
weiterhelfen.
Bis dahin vielen dank und schöne grüße aus dem sonnigen

Kennst du nicht die Benutzer und kannst einen Rundruf starten?
Oder implementiere in der Datenbank doch einen Benachrichtigungsdienst, der immer prüft ob eine Nachricht aufpoppen soll -> wie zb: „Bitte die DB verlassen!“

Das Komprimier-Access Problem wirst du nicht lösen können. Auch wenn du es in FE und BE aufteilt. Es müssen alle Benutzer draußen sein. Access komprimiert in dem es die bestehende Datenbank neu anlegt, alles in die neue DB kopiert und anschließend die alte DB löscht und die neuen umbenennt.

Hier hilft nur ein upsize auf den SQL-Server.

Gruß
Joey

Hallo,

Kennst du nicht die Benutzer und kannst einen Rundruf starten?
Oder implementiere in der Datenbank doch einen
Benachrichtigungsdienst, der immer prüft ob eine Nachricht
aufpoppen soll -> wie zb: „Bitte die DB verlassen!“

nun, es gibt auch noch die Möglichkeit (im Front-End) ein Formular (unsichtbar) anzulegen, dessen Timer-Event in kurzen Abständen prüft, ob ein Flag (im Back-End) gesetzt ist. Kann alles mögliche sein, zum Beispiel ein Häkchen an bestimmter Stelle. Falls ja, kann sich die Datenbank selbst schließen. Und auch weigern, sich wieder zu öffnen, bis das Flag wieder weg ist.

MfG,

ujk

Hallo,
wenn es denn in BE und FE aufgeteilt ist, kann man zumindest das komprimieren aus dem FE heraus aufrufen.

Im Schließen Ereignis einer unsichtbaren Form einfach ‚DBEngine.CompactDatabase‘ benutzen. Wenn es in einen Fehler läuft, dann ist man nicht der letzte Benutzer. Verlässt der letzte Benutzer die Applikation wird komprimiert. Vorher muss man durch die Formsauflistung gehen um alle Forms zu schließen, die auf die Daten zugreifen.

Je nach Größe der DB dauert das aber einen Moment und auch wenn ich die Methode schon erfolgreich angewendet habe, würde ich sie ab einer Anzahl von usern>5 nicht mehr anraten. Man kann nicht sicher verhindern, dass in dem Moment des komprimieren sich nicht jemand wieder einloggt und die DB sperrt. Im schlimmsten Fall hatte ich eine zerstörte Datenbank.

Gruss
Joey

Hallo, vielen dank für eure beiträge, hab sie alle zur kenntnis genommen und muss leider sagen das ich das mit meinem 20 Stunden Arbeitswoche (Student) nicht realisiert bekomme, da ich in anderen Projekten eigentlich zuständig bin.
Also habe ich nun eine andere Option entwickelt, undzwar habe ich nun die rechner&benutzer ausfindig machen können und habe mittels Autohotkey ein Script geschrieben welches ab 00:00 uhr bei allen die Datenbank schließt und anschließend die Komprimierung durchführt.

ich weiß das das nicht der beste weg ist, aber es hat enorm viel Zeit gespart :smiley:

Autohotkey exe:
; erstes IF nur für USER zum GAE-DB Schließen
IfWinExist, „Datenbank“
WinClose

;zweites IF für den PC wo der Vorgang der Komprimierung statt finden soll.
IfWinExist, „Datenbank“
{
WinClose
Sleep, 2000
Run „C:\Users\schroeta\Desktop\komprimieren.cmd“
}
Die If-Anweisungen sind jeweils in unterschiedlichen Scripten ist nur „pseudo code“

CMD-Datei:

Kill Process, POWERPNT.EXE
„Pfad zur install von Access\Microsoft Office\Office14\MSACCESS.EXE“ „Pfad zur Datenbank.mdb“ /compact

vielen dank euch und bis bald

Fizzo361