5 Mart 2013 Salı

Database de Kullanılmayan Stored Procedureleri Listelemek

Databaselerimiz plansız yapılan bir çok  stored procedure ile doludur.

Kullanılmayan sp leri bulmak için

SELECT p.*
 FROM sys.procedures AS p
 LEFT JOIN sys.dm_exec_procedure_stats AS s ON s.[object_id] = p.[object_id]
 WHERE s.object_id IS NULL

sorgusunu kullanabilirsiniz.
 

Stored Procedure lerde Kullanımayan Tabloları Bulmak

Günümüz ICT masraflarının en büyük gider kalemlerinden biri IO sıkıntılarını gidermek adına yaptıkları yatırımlardır.
Storage alanında teknolojinin henüz yeterli seviyeye ulaşmaması nedeniyle diskleri ne kadar verimli kullanırsak okadar az maliyet oluşturacağını biliriz.
Planlanmadan oluşturulan yazılım projelerinin oluşturmuş olduğu databaseler üzerinde çalışıyorsanız, içerisinde kaybolmak an meselesidir. kesinlikle kullanılmayan temp tabloların olduğunu bilirsiniz ama kritik bir uygulamaya dokunacağından tedirgin olabilirsiniz.
Bu durumda yapılacak işlerden biride sp lerin içerisinde kullanılmayan tabloları bulmak ve gereçekten ihtiyaç duyulmuyor olduğundan emin olduktan sonra silmektir.

Stored procedure lerde kullanılmamış tabloları aşağıdaki sorugu ile bulabilirsiniz.

select t.name, sys.objects.name foundin, sys.objects.type_desc from sys.objects t
left outer join   sys.sql_modules
inner join sys.objects on sys.objects.object_id = sys.sql_modules.object_id on sys.sql_modules.definition like '%' + t.name + '%'
where t.type = 'U' and sys.objects.name is null
order by t.name, type_desc, foundin

Not:Tablo sayınıza ve sp adedinize göre sorgunun tamamlanması uzayacaktır.