2012-12-03 34 views
1

我正在嘗試使用sys.dm_sql_referencing_entities DMV獲取表列表的所有依賴關係。SQL Server 2008 R2 DMV - sys.dm_sql_referencing_entities - 查詢使用情況

該查詢給了我所有表的列表:

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 
................... 

查詢應該如何進行f ramed?

回答

3

這是一個很好的例子,你想使用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將在它們中的每一個上運行該功能。

+1

重要提示:需要引用對象的CONTROL權限。當引用的實體是分區函數時,需要對數據庫的CONTROL權限。 (否則,返回null結果集。) – tbone