[ KizaBG @ 30.06.2009. 23:42 ] @
imam sledeci problem, pa me zanima da li ovo uopste i moze da se uradi.

baza u MS SQL 2005. Ima 50-ak tabela, i 300-ak stored procedure.

imam neke tabele, za koje mislim da se ne koriste ni u jednoj stored proceduri, ali nisam bas siguran.

da li postoji neka sistemska funkcija u MS SQL, pomocu koje mogu da vidim, da li se neka tabela, koristi u bilo kojoj od ove 300 stored procedure ?

hvala unapred .

poz.
[ .:Marvin:. @ 01.07.2009. 07:29 ] @
Code:

SELECT distinct o.name, o.type_desc, p.name, p.type_desc
FROM sys.sql_dependencies d
INNER JOIN sys.objects o
    ON d.object_id = o.object_id
INNER JOIN sys.objects p
    ON d.referenced_major_id = p.object_id


Pa u WHERE uslov dodas kao p.name tabelu koja te zanima, ili kao o.name proceduru koja te zanima.
[ mmix @ 01.07.2009. 08:40 ] @
Pored ovoga obrati paznju na dinamicko kreiranje skripti ako ih imas u stored procedurama. Pretrazi tekstove procedura za sp_exec i analiziraj kod procedure koji formira sktriptu da vidis koje tabele se tu koriste.
[ KizaBG @ 01.07.2009. 09:42 ] @
@Marvin: hvala puno za kod. Sacuvacu poruku, da imam ako mi nekada bude zatrebalo, ali, ja imam u bazi 300 stored proc. tako da bih morao 300 puta da izvrsim ovu naredbu.

@mmix: tako je, meni to treba, nesto kao 'search' opcija u teskt editoru .. da ta opcija/ugradjena sql funkcija 'protrci' kroz sve stored procedure, i da mi javi da li se u nekoj od njih nalazi ime tabele koju zadam.

pozdrav i hvala za pomoc
[ Fedya @ 01.07.2009. 10:11 ] @
Marvin ti je dao dobar odgovor, samo nisi probao

Ako hoces da proves da li se neka tablea koristi u procedurama prosiri njegov upit sa "WHERE p.Name = 'imeTabele'" i dobices kao rezultat sve storovane koje koriste tu tabelu. (ili prasan result set ako se tabela ne koristi).
Znaci uradice ti search.

Ali, sql server nema podrsku za pretrazivanje celog teksta tako da kod koji je Marvin dao vraca samo direktne zavisnosti o odredjenu tabelu (vidis da pretrazuje sys.sql_dependencies). S obzirom da je sistem toliko slozen kao sto kazes (300 sprocova) pretpostavljam da koristite source kontrolu za procedure, tako da bi jednostavan windows search u tom folderu trebalo da ti vrati tacniji rezultat. Ako nemate source kotrolu, a pri tome korisite dinamicki generisane upite, imate vecih problema od toga da li neka tabla stoji neiskoristena i ja se ne bih upustao u brisanje bilo cega.
[ KizaBG @ 01.07.2009. 10:50 ] @
BRAVO !! To je ono sto mi treba.

Hvala Fedya (sto si imao vise strpljenja od mene da procitas Marvinov post) i hvala Marvinu !!!! na resenju problema.

pozdrav svima, svako dobro