SQL Server 2008 R2 DMV - sys.dm_sql_referencing_entities - использование запроса

Я пытаюсь получить все зависимости для списка таблиц, используя sys.dm_sql_referencing_entities DMV.

Этот запрос дает мне список всех таблиц:

SELECT TableName from FinalTableList;  

Этот запрос дает зависимости для TableA:

SELECT  referencing_entity_name
FROM sys.dm_sql_referencing_entities ('dbo.TableA', 'OBJECT') ;  

Я хотел бы объединить 2 выше в запросе или процедуре, чтобы я мог получить все зависимости в следующем формате:

TableA  Dependency1
        Dependency2
        Dependency3
TableB  Dependency1
        Dependency2
...................

Как должен быть оформлен запрос?

1 ответ

Это отличный пример того, где вы хотите использовать cross apply, Вот пример:

SELECT  tablename, referencing_entity_name
FROM (select 'information_schema.columns' as tablename, 'object' as type) t cross apply
     sys.dm_sql_referencing_entities(t.tablename, t.type)

В первом подзапросе (который называется t), вы можете просто перечислить все пары аргументов. Затем, cross apply запустит функцию на каждом из них.

Другие вопросы по тегам