How to Find the Dependencies of a Table's Columns

advertisements

I have written a query to find out column names of tables in the database.

SELECT
  t.NAME AS TABLEName,
  SCHEMA_NAME(schema_id) + '.' + c.name AS ColumnName
FROM
  sys.tables t
  INNER JOIN sys.columns c
    ON c.object_id = t.object_id
WHERE OBJECT_NAME(c.object_id) LIKE '%Message%'
ORDER BY t.NAME

So far I've got the expected result, but whatever column I am looking I want to find out the dependency of column related tables. By executing the above query I am getting table names and column names.

How can I get the column related dependent tables?


Try this:

SELECT KCU1.TABLE_CATALOG,
       KCU1.TABLE_SCHEMA,
       KCU1.TABLE_NAME,
       KCU1.COLUMN_NAME,
       KCU2.TABLE_NAME   AS REFERENCED_TABLE_NAME,
       KCU2.COLUMN_NAME  AS REFERENCED_COLUMN_NAME
FROM   INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU1
       JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC
            ON  KCU1.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG
            AND KCU1.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA
            AND KCU1.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
       JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU2
            ON  KCU2.CONSTRAINT_CATALOG = RC.UNIQUE_CONSTRAINT_CATALOG
            AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA
            AND KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME
            AND KCU2.ORDINAL_POSITION = KCU1.ORDINAL_POSITION
WHERE  KCU1.TABLE_NAME LIKE '%Message%'
ORDER BY
       KCU1.TABLE_NAME,
       KCU1.COLUMN_NAME