code_junkie

Stored procedures reverse engineering

Nov 10th, 2011
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. with dep_cte as (
  2. select o2.object_id as parent_id
  3. ,o2.name as parent_name
  4. ,o1.object_id as child_id
  5. ,o1.name as child_name
  6. ,d.referenced_minor_id
  7. ,1 as hierarchy_level
  8. from sys.sql_dependencies d
  9. join sys.objects o1
  10. on o1.object_id = d.referenced_major_id
  11. join sys.objects o2
  12. on o2.object_id = d.object_id
  13. where d.referenced_minor_id in (0,1)
  14. and not exists
  15. (select 1
  16. from sys.sql_dependencies d2
  17. where d2.referenced_major_id = d.object_id)
  18.  
  19. union all
  20.  
  21. select o2.object_id as parent_id
  22. ,o2.name as parent_name
  23. ,o1.object_id as child_id
  24. ,o1.name as child_name
  25. ,d.referenced_minor_id
  26. ,d2.hierarchy_level + 1 as hierarchy_level
  27. from sys.sql_dependencies d
  28. join sys.objects o1
  29. on o1.object_id = d.referenced_major_id
  30. join sys.objects o2
  31. on o2.object_id = d.object_id
  32. join dep_cte d2
  33. on d.object_id = d2.child_id
  34. where d.referenced_minor_id in (0,1)
  35. )
  36.  
  37. select *
  38. from dep_cte
  39. order by hierarchy_level
  40.  
  41. select
  42. 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,
  43. 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,
  44. 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,
  45. 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
  46. from
  47. sysdepends sd
  48. inner join sysobjects as so on sd.id=so.id
  49. left join sysobjects as so2 on sd.depid=so2.id
  50. left join sysdepends as sd2 on so2.id=sd2.id and so2.xtype not in ('S','PK','D')
  51. left join sysobjects as so3 on sd2.depid=so3.id and so3.xtype not in ('S','PK','D')
  52. left join sysdepends as sd3 on so3.id=sd3.id and so3.xtype not in ('S','PK','D')
  53. left join sysobjects as so4 on sd3.depid=so4.id and so4.xtype not in ('S','PK','D')
  54. where so.xtype = 'P' and left(so.name,2)<>'dt'
  55. 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