Update des Frontends einer Mehrbenutzer-Datenbank im laufenden Betrieb

12. Februar 2015

Die klassische - und in unseren Augen bewährte - Methode zur Einrichtung einer Access-Datenbank mit mehreren Benutzern in einem Netzwerk sieht so aus: Die Daten liegen in einem Backend (möglichst SQL-Server), die Applikation in einem zentralen Access-Frontend auf dem File-Server, und Access bzw. die Access-Runtime ist auf dem PC oder Terminalserver installiert.

Soll nun eine neue Version des Frontends installiert werden, so hat man auf den ersten Blick nur zwei Möglichkeiten: Man nimmt das Update zu einer Zeit vor, in der niemand die Datenbank benötigt, oder man bittet die Benutzer, die Anwendung für die Zeit des Updates nicht zu verwenden.

Wir haben uns eine weitere Variante überlegt, bei der eine neue Version der Access-Datenbank zu jeder Zeit in Betrieb genommen werden kann, ohne dass die Benutzer alle gleichzeitig die Datenbank schließen müssen.

Verwendung von zwei Versionen A und B

Unsere Konstruktion beruht darauf, dass es von der Anwendung zeitweise drei Versionen gibt: eine für den Entwickler; eine, die gerade in Verwendung ist; und eine, die ab dem nächsten Start verwendet werden soll. Die Benutzer steigen einer nach dem anderen auf die neue Version um. Das erreichen wir folgendermaßen:

  • Im Datenbank-Verzeichnis auf dem File-Server liegt das Frontend (also die Access-Datei oder Programm-Datei) bis zu dreimal: <anw>.accdb, <anw>-A.accdb und <anw>-B.accdb.
  • Datei <anw>.accdb ist immer die neueste Version, welche nur vom Entwickler verwendet wird. Änderungen werden in diese Datei übernommen.
  • Soll eine neue Version freigegeben werden, so wird <anw>.accdb nach <anw>-A.accdb oder <anw>-B.accdb kopiert. Dies ist die Version, welche von nun an verwendet werden soll.
  • Welche Version verwendet werden soll, wird durch eine (leere) Indikatordatei mit dem Namen "Version-A.txt" bzw. "Version-B.txt" angezeigt.
  • Die Benutzer verwenden zum Starten der Datenbank ein Script, welches zunächst schaut, welche Version aktuell ist, und diese dann verwendet.
  • Die Access-Datenbank selbst merkt sich beim Starten, ob sie "Version A" oder "Version B" ist, und prüft über eine Timer-Funktion in regelmäßigen Abständen anhand der Indikatordatei, ob die eigene Version noch up-to-date ist. Falls nicht, so erhält der Benutzer die Meldung "Es gibt eine neue Version. Bitte Datenbank beenden und neu starten."

Script zum Starten der Anwendung

Das Script zum Starten der Datenbank kann etwa so aussehen (diese Variante berücksichtigt, dass in einem Netz Access eventuell unterschiedlich installiert ist):

set AnwDir=\\<Server>\<Verzeichnis>
set OFFICEVER=14

if exist "%ProgramFiles%\Microsoft Office\office%OFFICEVER%\msaccess.exe"      set MSACCESS=%ProgramFiles%\Microsoft Office\office%OFFICEVER%\msaccess.exe
if exist "%ProgramFiles(x86)%\Microsoft Office\office%OFFICEVER%\msaccess.exe" set MSACCESS=%ProgramFiles(x86)%\Microsoft Office\office%OFFICEVER%\msaccess.exe

if exist "%AnwDir%\Version-A.txt" (
  set VER=A
  del /q "%AnwDir%\anw-B.accdb"
  goto anwstart
)

if exist "%AnwDir%\Version-B.txt" (
  set VER=B
  del /q "%AnwDir%\anw-A.accdb"
)

:anwstart
start "Anw" "%MSACCESS%" "%AnwDir%\anw-%VER%.accdb" /wrkgrp "%AnwDir%\anw.mdw" /runtime

Wie man sieht, versucht das Script außerdem bei jedem Start, die alte Version zu löschen: Nachdem also alle Benutzer auf die neue Version umgestiegen sind, verschwindet die alte Version automatisch.

Script zum Installieren einer neuen Version

Für die komfortable Installation einer neuen Version dient folgendes Script, das die neue Version <anw>.accdb in die jeweils "freie" Version A oder B kopiert und die Indikatordatei entsprechend anpasst:

set AnwDir=\\<Server>\<Verzeichnis>

if not exist "%AnwDir%\Version-A.txt" (
 set VERALT=B
 set VERNEU=A
 goto anwinst
)

if not exist "%AnwDir%\Version-B.txt" (
 set VERALT=A
 set VERNEU=B
)

:anwinst
copy /y "%AnwDir%\anw.accdb" "%AnwDir%\anw-%VERNEU%.accdb"
del /q "%AnwDir%\Version-%VERALT%.txt"
echo >"%AnwDir%\Version-%VERNEU%.txt"

pause

Anmerkungen

Bei Verwendung dieser Konstruktion muss man zwei Dinge beachten:

  • Nach der Freigabe einer Version A darf man die nächste Version B erst dann installieren, wenn alle Benutzer auf A umgestiegen sind - denn sonst werden diejenigen, welche noch auf der alten Version B sind, keine Benachrichtigungen mehr erhalten.
  • Geht das Update mit größeren Änderungen in der Datenstruktur einher, ist dieser "schleichende" Umstieg auf die neue Version möglicherweise zu riskant, weil das Frontend im Betrieb nichts von den Änderungen mitbekommt.

Kommentare

Neuen Kommentar schreiben

Hinweis: Name und Kommentar werden gespeichert und auf der Website angezeigt. Die E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dazu, ggf. eine Frage zu beantworten, und wird anschließend gelöscht. Für weitere Infos lesen Sie bitte unsere » Datenschutzerklärung.