Startseite


Prüfung der Datenbankstruktur

Die Prüfung ermittelt, ob die Datenbankstruktur mit dem im Repository hinterlegten Fachobjektemodell im Einklang ist. Dies ist notwendig, damit die ASYS-Mittelschicht fehlerfrei auf die Datenbank zugreifen kann. Bei Abweichungen können von der ASYS-Mittelschicht SQL-Kommandos generiert werden, die von der Datenbank nicht oder nicht wie erwartet verarbeitet werden können und daher zu Fehlermeldungen oder unerwartetem Programmverhalten führen.

Die Prüfung für die Datenbanktypen Oracle und MS SQL Server erfolgt mit Hilfe der in diesen Datenbanken enthaltenen internen Verwaltungstabellen und umfasst die Prüfung auf

  • Vorhandensein aller Tabellen und Views
  • Vorhandensein aller Attribute
  • Einhaltung der Längendefinitionen aller Attribute vom Typ String
  • Vorhandensein von Indices, die gemäß Datenmodell erwartet werden1)
  • Nur für Oracle: Vorhandensein ein Sequenz-Definition für den Primärschlüssel einer jeden Tabelle.
  • Nur für Oracle: Vorhandensein von Triggern für die Erstellung eines neuen Primärschlüssels aus einer Sequenzdefinition.

Für MS Access stehen diese Informationen nicht zur Verfügung. Ersatzweise kann daher nur ein stark vereinfachtes Verfahren angewendet werden. Mit der Prüfung der Datenbankstruktur wird für jede im Repository enthaltene ASYS-Datenbankklasse eine Abfrage auf alle ihre Attribute ausgeführt, die so gestaltet ist, dass sie keine Treffermenge ergibt.

  • Gibt es die Tabelle oder den View unter dem zur Klasse hinterlegten Datenbanktabellennamen und alle Attribute, kann die Abfrage problemlos ausgeführt werden.
  • Fehlt die Tabelle oder sind nicht alle Attribute aus dem ASYS-Datenmodell in der Datenbank vorhanden, so läuft die Ausführung der Abfrage auf einen Fehler, der in der Maske ausgegeben wird.
  • Für Access kann keine Prüfung der korrekten Längen für Attribute von Typ String durchgeführt werden!
  • Für Access kann keine Prüfung auf das Vorhandensein von Indices durchgeführt werden!

Die nachfolgende Abbildung zeigt den Dialog vor dem Start einer Prüfung:

Maske Datenbanküberprüfung

Das Ergebnis einer Prüfung ist in der folgenden Abbildung beispielhaft zu sehen (Die Darstellung des Dialogs ist nicht mehr aktuell, vgl. obige Abbildung).

Maske Datenbanküberprüfung; Beispiel für Oracle

Die obere Liste Klassen / Views OK nimmt alle überprüften Tabellen auf, die sich ohne Fehler prüfen ließen.

Die untere Liste Klassen / Views mit Problemen nimmt alle überprüften Tabellen auf, bei denen eine Fehlermeldung zurückgeliefert wurde. Der Fehlertext des Fehlers2) wird mit ausgegeben und kann einen Hinweis auf die Ursache geben - im vorstehend abgebildeten ersten Beispiel fehlt offenbar ein Attribut in der Tabelle, der Name des fehlenden Attributs ist aber nicht bekannt und muss anderweitig ermittelt werden.

Auf zu löschende Objekte prüfen

Mit dem Ankreuzfeld Auf zu löschende Objekte prüfen wird die Prüfung dahingehend ausgerichtet, dass in der Datenbank nach Tabellen (und zugehörigen Views) sowie darin enthaltenen Tabellenspalten (Attributen) gesucht wird, die im Fachobjektemodell von ASYS nicht bzw. nicht mehr enthalten sind.

Ist die Option gesetzt wird die Datenbank geprüft auf:

  • Alle Tabellen, deren Name mit „W“ beginnt und zu denen es eine View gleichen Namens (ohne W) gibt, die jedoch im Fachmodel nicht (mehr) vorhanden sind (Beispiel: Tabelle „WABFALL_TA“ mit dem View „ABFALL_TA“ - in dieser Tabelle wurden bis zur ASYS-Version 7 die Abfälle zu den Teilanlagen verwaltet).
    • Für alle Tabellen, die so identifiziert wurden, werden in eine SQL-Skriptdatei folgenden Befehle geschrieben (Beispiel für Oracle, kann bei anderen Datenbanktypen abweichend sein):
      • DROP VIEW [VIEWNAME]
      • DROP TABLE [TABLENAME]
      • DROP index […] (alle Indices, die auf COLUMNS der zu löschenden Tabelle zeigen)
      • DROP trigger [TRIGGERNAME] (nur Oracle)
      • DROP sequence [SEQUENZNAME] (nur Oracle)
  • Alle Spalten der im Fachmodell bekannten Tabellen. Jede Spalte (COLUMN) in den Tabellen wird daraufhin überprüft, ob sie im Fachmodel (weiterhin) bekannt ist (das interne Feld DEL__STS und die ID-Felder sind von der Prüfung ausgenommen).
    • Für alle Spalten, die so identifiziert wurden, werden in die SQL-Skriptdatei folgenden Befehle geschrieben (Beispiel für Oracle, kann bei anderen Datenbanktypen abweichend sein):
      • ALTER TABLE [TABLENAME] DROP COLUMN [COLUMNNAME]
      • DROP index […] (alle Indices, die auf die zu löschende COLUMN zeigen)
      • als Abschluss, nachdem alle Spalten der Tabelle aufgeführt wurden
        • create or replace view [VIEWNAME] as …
        • ggf. noch eine Aktualisierung der spezifischen VIEWS, sofern Spalten aus solchen Tabellen (z.B. WBETRIEB) betroffen sind: create or replace view [ROLLE_BTR_…] as … etc.

Die SQL-Skriptdatei erhält den Namen Fix_DELETE_[TIMESTAMP].sql und wird im user.dir\dbscript\[DB-Typ]-Verzeichnis abgelegt (wenn dies nicht möglich ist, im user.home\Asys7-Verzeichnis). Der Name der Datei wird im Fenster „Klassen / Views mit Problemen“ ausgegeben.

Es ist möglich, dass in ASYS-Tabellen Spalten außerhalb von ASYS hinzugefügt wurden (für z.B. Verknüpfungen in andere Programme o.ä.). Diese Spalten würden ebenfalls in die Löschskripte geschrieben werden!

Die Datei kann über Datenbank aktualisieren / SQL-Befehl ausführen ausgeführt werden (bzw. bei Access über das Makro).

WICHTIG:

Bei der Prüfung kann NICHT untersucht werden, ob bzw. wo ggf. noch auf die Tabellen, Views oder Spalten zugegriffen wird. Sicher ist nur, dass die üblichen Konfigurationsobjekte von ASYS - Abfragen, Prüfregeln, Skripte und drgl. - nicht mehr über die einschlägigen Mechanismen - vor allem {%…%} und {*…*} bzw. die Notation Fachobjektname.Feldname - auf diese Teile der Datenbank zugreifen können.

Es kann aber nicht ausgeschlossen werden, dass bestimmte Konfigurationsobjekte - vor allem Abfragen - der länderindivuellen Konfiguration auf direktem Weg - ohne die vorstehend genannten Mechanismen - auf Objekte oder Spalten in der Datenbank zugreifen.

Ebenso wenig ist erkennbar, ob andere Systeme außerhalb von ASYS zumindest lesend auf die oben identifizierten Bestandteile in der ASYS-Datenbank zugreifen.

Bitte prüfen Sie daher sorgfältig vor einer Löschung, ob derartige Konfigurationsbestandteile oder Zugriffe auf die ASYS-Datenbank bei Ihnen existieren.

Andererseits

  1. Die Bestandteile der Datenbank, die nicht (mehr) im ASYS-Fachobjektemodell enthalten sind, werden von ASYS auch nicht gepflegt. Sie enthalten damit potentiell unzuverlässige Daten - veraltet oder unvollständig - mit denen nicht mehr gearbeitet werden sollte.
  2. Das Ergebnis der Prüfung - die SQL-Skriptdatei - ist eine normale Textdatei, die mit einem üblichen Editor - z.B. auch dem zu Windows gehörenden Editor-Programm - bearbeitet werden kann. Damit kann das Skript angepasst werden, um die Löschung auf bestimmte Datenbankobjekte zu beschränken.

Auf Vollständigkeit gegenüber dem aktuellen Fachobjektemodell prüfen

Mit dem Ankreuzfeld Auf Vollständigkeit gegenüber dem aktuellen Fachobjektemodell prüfen wird die Prüfung dahingehend ausgerichtet, dass in der Datenbank nach allen Tabellen, Views und Tabellenspalten gesucht wird, die im Fachobjektemodell enthalten sind.

Ist die Option gesetzt wird die Datenbank geprüft auf:

  1. Sind alle Tabellen, Spalten und Views, die im Fachmodell definiert sind auch in der Datenbank bekannt?
    1. Fehlende Tabellen oder Spalten werden im Fenster „Klassen / Views mit Problemen“ ausgegeben. Für fehlende Tabellen, Spalten oder Views wird kein ausführbares Skript erzeugt.
  2. Sind alle für ASYS definierten Indices vorhanden?
    1. Fehlende Indices werden in eine SQL-Skriptdatei geschrieben (Beispiel für Oracle, kann bei anderen Datenbanktypen abweichend sein):
      1. create index [INDEXNAME] on [TABLENAME] ([COLUMNNAME])
  3. Stimmt die Feldlänge der Spalten vom Typ Text im Fachmodel mit der Feldlänge in der Datenbank überein (nur für Oracle und SQLServer)?
    1. Für abweichende Feldlängen wird ein Eintrag in eine SQL-Skriptdatei geschrieben, sofern die Feldlänge im Fachmodel größer als in der Datenbank ist (Beispiel für Oracle, kann bei anderen Datenbanktypen abweichend sein):
      1. alter table [TABLENAME] modify [COLUMNNAME] nvarchar2([FELDLÄNGE])
      2. create or replace view [VIEWNAME] as …
  4. Bei Oracle wird zusätzlich geprüft, ob für jede Tabelle ein Trigger und eine Sequence vorhanden sind.
    1. Für fehlende Trigger wird ein Erstellungsbefehl in eine gesonderte SQL-Skriptdatei geschrieben.
    2. Fehlende Sequences werden im Fenster „Klassen / Views mit Problemen“ ausgegeben.
    3. Darüber hinaus wird geprüft, ob die vorhandenen Trigger und Sequences den Status „valid“ haben.
      1. Sofern dies nicht der Fall ist, wird dies im Fenster „Klassen / Views mit Problemen“ ausgegeben.

Die SQL-Skriptdatei bei fehlenden Indices oder unterschiedlichen Feldlängen erhält den Namen Fix_DB_[TIMESTAMP].sql und wird im user.dir\dbscript\[DB-Typ]-Verzeichnis abgelegt (wenn dies nicht möglich ist, im user.home\Asys7-Verzeichnis). Der Name der Datei wird im Fenster „Klassen / Views mit Problemen“ ausgegeben.

Die SQL-Skriptdatei bei fehlenden Triggern erhält den Namen Fix_TRIGGER_[TIMESTAMP].sql und wird im user.dir\dbscript\[DB-Typ]-Verzeichnis abgelegt (wenn dies nicht möglich ist, im user.home\Asys7-Verzeichnis). Der Name der Datei wird im Fenster „Klassen / Views mit Problemen“ ausgegeben.

Die Dateien können über Datenbank aktualisieren / SQL-Befehl ausführen ausgeführt werden (bzw. bei Access über das Makro).

Die Prüfung wird über den Button Prüfung durchführen gestartet. Die Prüfung dauert wenige Minuten (Access) bis ca. 30 Minuten (Oracle) - die Anbindung der Datenbank und ihre Auslastung beeinflusst aber die Dauer der Prüfung. Tipp: Sie müssen eines der beiden Ankreuzfelder setzen, damit eine Prüfung erfolgt. Ist keine Prüfungsart ausgewählt, wird auch nichts geprüft.

Der Button SQL-Skript-Tool öffnet den Dialog zur Ausführung eines SQL-Skriptes.

Über den Button Schließen kann die Maske geschlossen werden.


Weitere Informationen zu dieser Maske
keine
landesspezifische Zusatzinformationen: SH HH NI HB NW HE RP BW BY SL BE MV ST BB TH SN

Zurück zum Seitenanfang


1)
Die Datenbanken können zusätzliche und/oder zusammengesetzte Indices enthalten. Das Fachobjektemodell enthält für einzelne Attribute Index-Markierungen. Für jede Tabelle wird überprüft, ob es mindestens eine Indexdefinition gibt, in dem das markierte Attribut enthalten ist.
2)
Dieser Fehlertext wird unverändert aus der Programmbibliothek zur Anbindung der Datenbank - s.a. Datenbankzugangsdefinition - übernommen und ausgegeben. Eine Interpretation dieses Fehlertextes durch ASYS erfolgt nicht.
  • adm6/chd/chkdbstrk.txt
  • Zuletzt geändert: 2023/11/28 11:11
  • von eflor