SQL: Abhaengigkeiten einer Tabelle finden

Tags: sql

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.

image

Das Tool wird ausgeführt.

clip_image002

Leider sieht das Ergebnis zumeist sehr schlecht aus – gerade bei komplexeren Datenbanken kommt sehr häufig eine Fehlermeldung. Es funktioniert nicht. L

clip_image004

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.

clip_image006

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

Add a Comment