
SQL: Abhaengigkeiten einer Tabelle finden
Aus gegebenem Anlass. Ein Datensatz soll aus einer Tabelle entfernt werden.
Bei einem großen Projekt kann man aber nicht sagen, ob eine andere Tabelle und deren Daten diesen Datensatz referenzieren und eine Abhängigkeit besteht.
Bei einer Auslieferung könnte es zu einem Fehler beim Datenbankupgrade kommen.
Grundsätzlich existiert im SQL Management Studio eine Funktion, welche die Abhängigkeiten einer Tabelle ermittelt.
Einfach mit der rechten Maustaste auf die gewünschte Tabelle klicken und den Befehl „Abhängigkeiten anzeigen“ auswählen.
Das Tool wird ausgeführt.
Leider sieht das Ergebnis zumeist sehr schlecht aus – gerade bei komplexeren Datenbanken kommt sehr häufig eine Fehlermeldung. Es funktioniert nicht. L
Abhilfe schafft ein kleines Skript, welches die entsprechenden Abhängigkeiten in der Datenbank ermittelt und anzeigt:
SELECT f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,
fc.parent_column_id) AS ColumnName,
OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
COL_NAME(fc.referenced_object_id,
fc.referenced_column_id) AS ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc
ON f.OBJECT_ID = fc.constraint_object_id
WHERE f.referenced_object_id = (
SELECT [object_id] FROM sys.tables
WHERE [name] = 'KST_Abrechnungseintrag')
Das Ergebnis zeigt die gewünschten Informationen an.
Fazit: Mit Hilfe des obigen Skripts lassen sich Abhängigkeiten einer Tabelle ermitteln. Mögliche Probleme und Konsequenzen des löschens von Datensätzen lassen sich so schon im Vorfeld erkennen und behandeln.
Happy Coding!
Helmut