Stored Procedurelerin,Triggerların, Constraintlerin, Viewlerin içeriğini görme
Günün birinde de şuna benzer bir ihtiyacınız eminim olmuştur.
Bir satış tablonuz var ve arkasında da bir çok trigger. Bir triggerın yaptığı işlem kalkmış diğer bir triggeri o da başka birini tetiklemiş. Bunlardan biri de stoktan ürünün satıldığı kadarını düşmüş. Ama bunu hangisinin içinde yapmış diye tespit etmeniz gerekti.
Tek tek triggerları arayarak bulurum diyorsanız bu da bir çözümdür ama daha kolay bir yolu var desem üstelik tek tek trigger içeriğini incelemekten çooooook daha kolay.
Bu gibi durumlarda imdadımıza syscomments tablosu yetişiyor.
Nasıl mı?
select object_name(id),text from syscommentswhere text like '%update stoktablosu%' and text like '%set miktar = miktar - 1%'
***object_name fonksiyonu, id si verilen veritabanı nesnesinin adını döndürür.
syscomments tablosu, Ms-SqlServer'daki her bir view, rule, default, trigger, CHECK constraint, DEFAULT constraint ve stored procedure 'u içeriğiyle birlikte tutar.syscomments tablosunun yapısını incelediğinizde bir çok kolonu olduğunu görürsünüz. Bunlardan text kolonu vt nesnesinin içeriğini ifade eder. Max 4 MB sınırlıdır. Dolayısıyla örneğin nesnenizin içeriği 4 mb dan fazla ise yeni bir satır kayıt daha yine bu tabloda yer alır, ilk satırda colid 1 iken nesnenin ikinci 4 mb lık kısmı için 2, üçüncü 4 mb lik yeri içinse colid 3 olur ve böyle gider.
Problem: İçerisinde Tb_Jobdeneme tablosuna insert işlemi yapılan tüm veritabanı nesneleri neler diye mi merak ediyorsunuz?
Çözüm:
select * from syscommentswhere text like '%insert into Tb_Jobdeneme %'