Herausfinden in welcher DB und Tabelle etwas liegt

Forum für neue Firebird-Anwender.

Moderator: thorben.braun

Antworten
gtxdriver
Beiträge: 3
Registriert: So 15. Dez 2019, 14:30

Sa 11. Jan 2020, 12:24

Hallo zusammen

ich habe hier eine relativ komplexe Windows Anwendung (fremd Software) welche daten in mehreren lokalen FB Datenbanken (FB Server) und wiederum hunderten von Tabellen speichert und damit arbeitet.

Ich betreibe eine eigene Software welche auch mit diesen Datenbanken und Tabellen arbeitet - das klappt seit jahren sehr gut und bisher habe ich auch immer gefunden welche zusammenhänge zwischen den Tabellen genutzt werden und wo die Daten liegen.

Aktuell suche ich 2 Datenfelder welche die Fremdsoftware nutzt - ich habe jetzt schon stundenlang mich durch die Tabellen geklickt und gesucht - finde aber ums verrecken nix...

Gibt es irgendeinen weg zu "suchen" oder zu "Tracen" ?

CU
GTR
bfuerchau
Beiträge: 188
Registriert: Mo 7. Mai 2018, 18:09

Sa 11. Jan 2020, 15:33

Dazu musst du ein Programm schreiben, dass Tabelle für Tabelle und Feld für Feld nach einem dir bekannten Inhalt sucht.
Mit sog. Schema-Abfragen kannst du alle Tabellen und Spalten auslesen und dich z.B. auf die Spalten mit den passenden Attributen, also Zeichenfeld, Datumfeld usw., konzentrieren.
Das Script/Programm durchläuft dann halt alle Tabellen und wirft dir die Tabelle, das Feld und ggf. den Schlüssel (Schemaabfrage auf Primary Key oder Unique Key) aus.
Der Rest ist dann wieder, wie bisher, nach Augenschein.

Zur Beschleunigung des Ganzen bietet sich da eine Sprache mit Multithreading an um viele Tabellen gleichzeitig zu durchsuchen.
C# z.B. kann Parallel.ForEach().

Ob dir die Trace-Funktionalitäten da helfen weiß ich nicht, da hier meist nicht Inhalte getraced werden.
Benutzeravatar
martin.koeditz
Beiträge: 218
Registriert: Sa 31. Mär 2018, 14:35

So 12. Jan 2020, 19:23

Guten Abend,

tracen hilft hier schon. Wenn man den Trace laufen lässt, während die Fremdabfrage ausgeführt wird, kann man genau sehen, welche SQL-Abfragen an die DB geschickt werden. Mit etwas Analyse bekommt man die Daten dann schon raus. Über diesen Weg haben wir bereits einiges an Reverse Engineering durchgeführt.

Gruß
Martin
Martin Köditz
it & synergy GmbH
Antworten