Datenanalyse mit SQL Server – Wie finde ich Spalten die Werte aus einen Umsystem weiterverarbeiten

Problem

Eine Anwendung mit SQL Server Datenbank soll migriert werden. Diese bezog Daten aus einen Umsystem, welches besondere Regeln bei der Angabe fehlender Datumsangaben hatte. Diese Form der Datenintegration soll in der Regel Systembrüche harmonisieren. Da die Anwendung älter ist, eine Dokumentation dieses Aspekts nicht vorhanden, die Analyse des Sourcecodes nicht verhältnismässig, müssen andere Techniken zur Datenanalyse in Betracht gezogen werden.

Die Daten werden aktuell in einer SQL Server Datenbank gespeichert. Neben der Transformation der Daten für die neue Anwendung sollen auch die Regeln des Umsystems bereinigt und entfernt werden. Dazu ist es nötig einen Überblick zu bekommen, wie sich diese Daten innerhalb der Datenbank verteilen.

Aktion

Der SQL Server stellt für diese Zwecke System-Sichten (sys) bereit. Für die Ermittlung der Informationen fragen wir die drei Sichten sys.objects, sys.all_columns und sys.types ab. Mithilfe dieser Informationen lassen sich Abfragen für die weitere Verwendung erstellen.

Eine Abfrage zur Datenanalyse kann wie folgt aussehen:

SELECT
 'SELECT COUNT(*), ''' + c.name + '-' + t.name +  ''' Bereich FROM ' + SCHEMA_NAME(t.schema_id) + '.' + t.name + ' WHERE ' + c.name + ' = ''1753-1-1'' UNION'
FROM sys.objects t
INNER JOIN sys.all_columns c ON c.object_id = t.object_id
INNER JOIN sys.types ty ON ty.system_type_id = c.system_type_id
AND ty.name IN ('date')

Das Resultat kann nun dazu genutzt werden, um sich einen Überblick zu verschaffen.

SELECT
*
FROM (
  SELECT COUNT(*) Anzahl, 'XXXXXXXX - XXXXXXXXXXXXXXXXXXX' Bereich FROM XXX.XXXXXXXXX WHERE XXXXXXXX = '1753-1-1' UNION
  SELECT COUNT(*), 'XXXXXXXX - XXXXXXXXXXXXXXXXXXX' Bereich FROM XXX.XXXXXXXXX WHERE XXXXXXXX = '1753-1-1' UNION
  -- für bessere Lesbarkeit entfernt
) nd
WHERE nd.Anzahl > 0

Die Abfrage wird ausgeführt und wir haben eine Übersicht der Tabellen und Spalten mit dem entsprechenden Mengengerüst. So sind die Korrekturen zielgerichtet umsetzbar.

Die Abbildung zeigt das Abfrageresultat der betroffenen Tabellen und Spalten, die den Wert aus dem Umsystem enthalten

Resultat

Mit den Metadaten des SQL Server konnten die Abfragen zur Ermittlung generiert und ausgeführt werden. Wir hatten ein aussagekräftiges Resultat darüber, dass die Daten des Umsystems in sechs Tabellen und acht Spalten weiterverarbeitet wurden. Dies kann nun bei der Transformation der Daten in die neue Anwendung eingearbeitet und somit berücksichtigt werden.

Hinweis: Die Abfragen sind auf einen SQL Server auch mit dem ANSI-Standard INFORMATION_SCHEMA möglich. Hier eine Liste relationaler Datenbanken, welche diesen unterstützen.