Datenbankabgleich

Der Datenbankabgleich hat die Aufgabe, die Datenbankstruktur einer älteren eEvolution-Version auf den aktuellen Stand zu bringen. Er verwendet dafür eine Referenzdatenbank, welche mit eEvolution gemeinsam ausgeliefert wird. Der Datenbankabgleich kann im Inst-Modul über den Menüpunkt Datenbankabgleich auf dem Reiter "Installation" gestartet werden.

Mit Hilfe dieses Tools können Sie die Datenbankstruktur einer älteren Installation auf den Stand einer Referenzdatenbank bringen. Es werden dabei folgende Strukturen angepasst:

Bitte beachten!

Es sollten immer nur Kopien von Prozeduren und Views bearbeitet werden, da der Datenbankabgleich die Views und Prozeduren aus der Referenzdatenbank verwendet. Die durchführten Änderungen werden somit ohne weitere Nachfrage überschrieben.

 

Weiterhin werden beim Datenbankabgleich die Einträge aus bestimmten Tabellen auf der Kundendatenbank mit den Einträgen auf der Referenzdatenbank abgeglichen und bei Bedarf miteinander synchronisiert. Bei der Synchronisation der Einträge wird je nach Tabelle unterschiedlich vorgegangen:

  1. in den folgenden Tabellen auf der Kundendatenbank überprüft und die fehlende Einträge aus der Referenzdatenbank in die Kundendatenbank übertragen:

Bei der Replikation der Einträge aus der Referenzdatenbank in die Kundendatenbank werden dabei bereits bestehende Einträge nicht angepasst und in ihrer bisherigen Form beibehalten.

  1. Bei den folgenden Tabellen werden dagegen nicht nur neue Einträge hinzugefügt, sondern auch die bestehenden Einträge bei Bedarf aktualisiert und damit mit den Einträgen auf der Referenzdatenbank synchronisiert:

Natürlich werden keine zusätzlich vorhandenen Einträge in diesem Fall gelöscht.

  1. Zusätzlich erfolgt bei Aktivierung des Parameters „Automatische Reportaktualisierung einschalten“ auf dem Reiter „Installation“ eine Reportaktualisierung direkt über den Datenbankabgleich und es werden die folgenden Tabellen miteinander abgeglichen:

In diesem Fall gelten natürlich dieselben Bedingungen und Voraussetzungen, wie bei der manuellen Reportaktualsierung über „Reports aktualisieren“, d.h. es werden nur Reports aktualisiert bei denen die Reportaktualisierung grundsätzlich erlaubt ist und zudem erfolgt auch an dieser Stelle natürlich die Abfrage, ob die Reportbezeichnungen aktualisiert werden dürfen.

 

Sollte der Datenbankabgleich bei der Durchführung auf Probleme in der Datenstruktur stoßen, die nicht automatisch korrigiert werden dürfen, so werden diese Probleme in die Protokolldatei geschrieben und automatisch die Datenbank in den Ursprungszustand (= Rollback) VOR dem Datenbankabgleich zurückversetzt, nur die Änderungen aus dem PreDbAbgleich.wts bleiben erhalten. Diese festgestellten Probleme an der Datenstruktur müssen im Anschluss manuell behoben werden, danach kann der Datenbankabgleich erneut durchgeführt werden.

Hinweis:

Da das PreDBAbgleich.wts durchgelaufen ist, sollte nach einem fehlgeschlagenen Datenbankabgleich die Sicherung eingespielt und dort die festgestellten Mängel an der Datenstruktur korrigiert werden.

Das Zurückversetzen in den Ursprungszustand bei einem Fehler im Datenbankabgleich kann für SQL-Server-Datenbanken durch das Aktivieren der Option "Der DB-Abgleich wird beim Auftreten eines Fehlers fortgeführt. Die aufgetretenen Fehler werden in ein Protokoll geschrieben und müssen im Anschluss behoben werden. Die Version wird trotzdem hoch gesetzt." ausgeschaltet werden, so dass der Datenbankabgleich beim Auftreten von Fehlern trotzdem fortgeführt wird, wobei durch die aufgetretenen Fehler natürlich bestimmte Anpassungen an der Datenbankstruktur nicht durchgeführt werden können. Es ist daher unbedingt notwendig die in der Protokolldatei protokollierten Fehler zu beheben und mit einem erneuten Datenbankabgleich die fehlenden Anpassungen an der Datenbankstruktur durchführen zu lassen.

Da bei Oracle-Datenbanken kein Rollback vorgenommen werden kann, ist diese Option dort IMMER aktiviert, es müssen aber auch hier die beim Datenbankabgleich aufgetretenen Fehler korrigiert werden und dieser im Anschluss erneut vorgenommen werden.

WICHTIG:

Diese Option wurde in erster Linie eingebaut, um die Zeit des ROLLBACKS einzusparen und den Datenbankabgleich auch unter Oracle zu erlauben. Der ROLLBACK bei einem fehlgeschlagenen Datenbankabgleich kann im schlimmsten Fall noch einmal genauso lange dauern, wie die Anpassungen durch den Datenbankabgleich.

Das ändert aber nichts daran, dass es trotzdem notwendig ist die festgestellten Mängel aus der Protokolldatei zu beheben, da es sonst unvorhergesehene Probleme im täglichen Umgang mit der Anwendung kommen kann. Es wird empfohlen nach der Beseitigung der Mängel die fehlenden Anpassungen an der Datenbankstruktur durch das erneute Ausführen des Datenbankabgleichs nach zu ziehen. Es ist aber natürlich alternativ auch möglich diese fehlenden Anpassungen an der Datenbankstruktur manuell nachzuziehen.

 

Die Protokolldatei wird in dem unter "Pfad zur Protokolldatei" angegeben Pfad abgelegt, wo alle aufgetretenen Probleme protokolliert sind. Alle Probleme, die nicht automatisch durch den Datenbankabgleich korrigiert werden können oder dürfen, werden mit dem Präfix !!!ERROR!!! versehen, um schnell identifiziert werden zu können.

Hinweis:

Es gibt immer wieder vereinzelte Probleme, die nicht vorab geprüft werden können und daher erst bei der tatsächlichen Durchführung zu einem Fehler führen. Die Protokolldatei enthält daher ggf. nicht alle Probleme, die beim Aktualisieren der Datenbank auftreten werden. Daher kann es sein, dass der Datenbankabgleich mehrfach durchgeführt werden muss, bevor er erfolgreich abgeschlossen werden kann.

Zu den häufigsten Problemen, die nicht automatisch durch den Datenbankabgleich korrigiert werden können, gehören verwaiste Daten, die nicht zu einem neu anzulegenden Fremdschlüssel oder Unique Indizes passen. Der Umgang mit diesen Daten muss immer von Fall zu Fall entschieden werden, da es hier keine allgemeine Lösung geben kann.

In der Protokolldatei wird neben dem konkreten Fehler in diesen Fällen aber auch i.d.R. ein hilfreiches SQL-Statement mitgeliefert, mit dem die verwaisten Datensätze identifiziert werden können.

Beispiel:

!!!ERROR!!!: Es wurden Einträge in der Tabelle "dbo.AAGARCHIV" gefunden, die nicht zur Fremdschlüsseleinschränkung passen, bitte kontrollieren sie in der Tabelle die Datensätze nach verwaisten Einträgen! Ggf. diese Einträge löschen oder ändern. Ein hilfreiches Statement hierfür wäre: SELECT * FROM [dbo].[AAGARCHIV] AS FIRSTTABLE WHERE NOT EXISTS (SELECT 1 FROM [dbo].[ARCHIV] AS SECONDTABLE WHERE FIRSTTABLE.LFDARCHIVNR = SECONDTABLE.LFDNR) AND LFDARCHIVNR IS NOT NULL

 

In der sql.config gibt es die Möglichkeit mit Hilfe des Tags <reference_database value="true"/> die Referenz-Datenbank von eEvolution als solche zu kennzeichnen. Die Einträge mit diesem Tag stehen dann im Dialogfenster "DB-Abgleich-Tool" in der Feldgruppe "eEvolution Referenzdatenbank" zur Auswahl bereit, so dass keine Verwechslung zwischen Referenz- und Kundendatenbank mehr möglich ist. Ist in der sql.config nur ein Eintrag als Referenzdatenbank gekennzeichnet, wird dieser direkt übernommen. Sind dagegen mehrere Einträge als Referenzdatenbank markiert, so wird automatisch nach der passenden Version gesucht und diese vorbelegt. Dabei werden die ersten vier Stellen der aktuellen Desktop-Version betrachtet.

Beispiel:

Die Desktop-Version ist 11.0.0.0.0.1.1. Es wird nur 11.0.0.0 für die Suche verwendet. Wird in den Einträgen für eine Referenzdatenbank ein Wert größer oder gleich 11.0.0.0 gefunden, so wird dieser Eintrag als Referenz-Datenbank ausgewählt.

Hinweis:

Das funktioniert nur solange, wie der Name der Referenzdatenbank die Versionsnummer enthalten, d.h. "eEvolutionReferenceX.X.X.X" , wie z.B. "eEvolutionReference11.0.0.04".

Wenn bei der Suche keine oder mehrere passende Einträge gefunden werden, so wird nichts ausgewählt und der Benutzer muss die Auswahl manuell durchführen.

 

Es gibt drei Voraussetzungen, die für die Verwendung vom Datenbankabgleich erfüllt sein müssen:

  1. Alle Standardmodule müssen mindestens die Version 8.0.0.5 vorweisen können. Sie können die Auswahl auf die Standardmodule über das Kontextmenü einschränken, welches Sie über die rechte Maustaste erreichen können.

Hinweis:

Sie können ältere eEvolution-Versionen wie gewohnt über die wts-Skripte hochziehen. Sobald die für den Datenbankabgleich notwendige Version 8.0.0.5 erreicht ist, wird ein Hinweis eingeblendet:

  1. Der Datenbankabgleich wird erst ab dem Microsoft SQL-Server 2005 unterstützt, mit älteren Versionen können die Funktionen vom Datenbankabgleich nicht genutzt werden. Sowohl die Referenzdatenbank, als auch die Kundendatenbank muss daher mindestens auf einem Microsoft SQL-Server 2005 laufen. Für Oracle-Datenbanken gilt, dass es sich um eine von eEvolution aktuell unterstützte Oracle-Version handeln muss.
  2. Sichern Sie ihre Datenbank, bevor Sie einen Datenbankabgleich durchführen. Sollte der Datenbankabgleich abstürzen, sollte die Datensicherung der Datenbank wieder eingespielt werden, da sich die Datenbank nun in einem undefinierten Zustand befindet.

 

Mit Hilfe der mitgelieferten Referenz Datenbank werden die Strukturen entsprechend angepasst. Dazu ist es erforderlich, dass die Datenbank "eEvolutionReferenceX.X.X.X, die mit dem aktuellen Build ausgeliefert wird (im Unterverzeichnis ReferenceDatabase) auf einem Datenbankserver gemäß der Systemvoraussetzungen von eEvolution durch den Datenbankadministrator eingelesen und zur Verfügung gestellt wird.

Wichtig:

Beim Einlesen ist darauf zu achten, dass der Name der Referenzdatenbank entsprechend gewählt wird: eEvolutionReferenceVERSION

 

Information:

Es gibt die Möglichkeit eine zusätzliche Lizenz bei der eEvolution GmbH & Co. KG zu erwerben, um den Datenbankabgleich für MS SQL-Server und Oracle Datenbanken zu deaktivieren.

Nach dem Einspielen dieser Lizenz in die Datenbank können die Standardmodule über den Menüpunkt "Module(e) installieren" auf die aktuellste Version hochgezogen werden, ohne einen Datenbankabgleich starten zu müssen. Der Datenbankabgleich kann natürlich parallel weiterhin verwendet werden.

 

Verwandte Themen:

Einstellungen für den Datenbankabgleich

Hinzufügen einer fehlenden Identity Eigenschaft

Datenbankabgleich - Datenbankunterschiede visualisieren

Datenbankabgleich - SQL-Server Datenbanken miteinander abgleichen

Datenbankabgleich -Oracle-Datenbanken miteinander abgleichen"