Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- with dep_cte as (
- select o2.object_id as parent_id
- ,o2.name as parent_name
- ,o1.object_id as child_id
- ,o1.name as child_name
- ,d.referenced_minor_id
- ,1 as hierarchy_level
- from sys.sql_dependencies d
- join sys.objects o1
- on o1.object_id = d.referenced_major_id
- join sys.objects o2
- on o2.object_id = d.object_id
- where d.referenced_minor_id in (0,1)
- and not exists
- (select 1
- from sys.sql_dependencies d2
- where d2.referenced_major_id = d.object_id)
- union all
- select o2.object_id as parent_id
- ,o2.name as parent_name
- ,o1.object_id as child_id
- ,o1.name as child_name
- ,d.referenced_minor_id
- ,d2.hierarchy_level + 1 as hierarchy_level
- from sys.sql_dependencies d
- join sys.objects o1
- on o1.object_id = d.referenced_major_id
- join sys.objects o2
- on o2.object_id = d.object_id
- join dep_cte d2
- on d.object_id = d2.child_id
- where d.referenced_minor_id in (0,1)
- )
- select *
- from dep_cte
- order by hierarchy_level
- select
- so.name + case when so.xtype='P' then ' (Stored Proc)' when so.xtype='U' then ' (Table)' when so.xtype='V' then ' (View)' else ' (Unknown)' end as EntityName,
- so2.name + case when so2.xtype='P' then ' (Stored Proc)' when so2.xtype='U' then ' (Table)' when so2.xtype='V' then ' (View)' else ' (Unknown)' end as FirstDependancy,
- so3.name + case when so3.xtype='P' then ' (Stored Proc)' when so3.xtype='U' then ' (Table)' when so3.xtype='V' then ' (View)' else ' (Unknown)' end as SecondDependancy,
- so4.name + case when so4.xtype='P' then ' (Stored Proc)' when so4.xtype='U' then ' (Table)' when so4.xtype='V' then ' (View)' else ' (Unknown)' end as ThirdDependancy
- from
- sysdepends sd
- inner join sysobjects as so on sd.id=so.id
- left join sysobjects as so2 on sd.depid=so2.id
- left join sysdepends as sd2 on so2.id=sd2.id and so2.xtype not in ('S','PK','D')
- left join sysobjects as so3 on sd2.depid=so3.id and so3.xtype not in ('S','PK','D')
- left join sysdepends as sd3 on so3.id=sd3.id and so3.xtype not in ('S','PK','D')
- left join sysobjects as so4 on sd3.depid=so4.id and so4.xtype not in ('S','PK','D')
- where so.xtype = 'P' and left(so.name,2)<>'dt'
- group by so.name, so2.name, so3.name, so4.name, so.xtype, so2.xtype, so3.xtype, so4.xtype
Add Comment
Please, Sign In to add comment