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.
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.