Nisam siguran da sam razumeo šta ti treba ali evo koda koji sam nabrzaka napisao i pokazuje zavisnost objekata ali samo do prvog nivo, sigurno se kod može preraditi tako da se doda parametar nivo pa da se uradi zavisnost objekata do odredjenog nivoa.
Inače u object browseru se može videti za svaki objekat neke baze koji su mu dependencies prvog nivoa.
Isprobao sam na bazi koja ima oko 8000 objekata u sysobjects tabeli i ovaj izveštaj se napravi za manje od devet minuta.
Code:
/*
Objasnjenje kolona
objectName - Naziv objekta
DName - Naziv objekta
Type - pogledaj u BOL-u za tabelu sysobjects kolona type sta znaci svaka skracenica
Dependencies - dve vrednosti
1 Depends on - znaci da objectName zavisi od DName
2 - znaci da DName zavisi od objectName
*/
declare @objectID int
drop table #objectID
drop table #dependencies
create table #objectID
(
objectID int
)
create table #dependencies
(
objectID int
,objectName sysname
, DName sysname
, DID int
, Type char(2)
, Dependencies varchar(15)
)
insert into #objectID
select id from sysobjects
while (select count(*) from #objectID) > 0
begin
select @objectID = min(objectID) from #objectID
insert into #dependencies
-- this object depends on following objects
select distinct @objectID, object_name(@objectID), o.name, o.id, o.type, '1 Depends on' from sysobjects o, sysdepends d
where d.id = @objectID and o.id = d.depid
insert into #dependencies
-- the following objects depend on this object
select distinct @objectID, object_name(@objectID) , o.name, d.id , o.type, '2' from sysdepends d, sysobjects o
where d.depid = @objectID and d.id = o.id
delete from #objectID where objectID = @objectID
end
select objectName
, DName
, Type
, Dependencies
from
#dependencies
order by
objectName
, Dependencies
, DName