SQL czy procedura jest używana

0

Witam,
Mam taki problem, mam w bazie powiedzmy 100 procedur i chce sie dowiedziec która procedura jest uzywana bądz nie używana, po prostu chce wiedziec które procedury mogę usunąć i nie wpłynie to na inne procesy, czy da sie to jakos sprawdzic w tabelach systemowych bądz w jakims innym miejscu? niestety nie mam załozonych logow w tych procedurach wiec nie sprawdzę w ten sposów, a nie widzi mi sie teraz alterować 100 procedur i dodawac im inserta do logów.

0

co to znaczy "używana"? Bo zdajesz sobie sprawę, że daną procedurę może wywoływać aplikacja a nie inna procedura czy trigger

0

używana w sensie czy ktoś/cos jąwywołało, np jakis job, dts, aplikacja, trigger, czy nawet ktos z "palca"

3

zobacz coś takiego

SELECT o.name, 
       ps.last_execution_time 
FROM   sys.dm_exec_procedure_stats ps 
INNER JOIN 
       sys.objects o 
       ON ps.object_id = o.object_id 
WHERE  DB_NAME(ps.database_id) = '' 
ORDER  BY 
       ps.last_execution_time DESC 

a musisz mieć wersję min 2008

0

abrakadaber dzieki, wygląda na to że działa :)

to może macie coś jeszcze na temat tabel?? czy coś odczytywało dane z nich, czy przeprowadzano na nich operacje :)

0

No ok to ostatnie pytanie :)

SELECT sch.name
	   ,o.name
       ,ps.last_execution_time
	   ,ps.execution_count
FROM   sys.dm_exec_procedure_stats ps 
INNER JOIN sys.objects o 
       ON ps.object_id = o.object_id
INNER JOIN sys.procedures p
	   ON	ps.object_id=p.object_id
INNER JOIN sys.schemas sch
	   ON	sch.schema_id = p.schema_id
--INNER JOIN sys.sysusers u
--		 on	u.sid = ps.database_id
WHERE  DB_NAME(ps.database_id) = 'BAZA_1' 
ORDER  BY ps.last_execution_time DESC 

tu fajnie mi wyswietla schemat | nazwe procedury | ostatnie uruchomienie | ilość uruchomien a chciałbym jeszcze miec nazwe użytkownika który ostatni odpalil procedure
niby userID znajdują sie w tych tabelach i nazwy userów ale nie mam po czym z joinowac z tymi procedurami co mam wyzej. Ewentualnie wziałebym jakas tabele w której jest objectID procedury i userID ale nie wiem jaka tabela ma obie te wartośći.

select * from sys.sysusers
select * from sys.sysoledbusers

jakieś pomysły?

0

obawiam się, że tego już nie wyciągniesz

0

Ok, w każdym razie dziekuje wszystkim za pomoc :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1