SQL Server’da Tüm Stored Procedure ve Fonksiyonlarda Anahtar Kelime Araması Nasıl Yapılır?

SQL Server veritabanlarında çalışırken, stored procedures (saklı yordamlar) ve fonksiyonlar (functions) sıkça kullanılan nesnelerdir. Ancak, zamanla büyüyen veritabanlarında belirli bir işlevin veya işlemin hangi stored procedure ya da fonksiyon içerisinde tanımlandığını bulmak zor olabilir. Özellikle belirli bir anahtar kelimeyi veya ifadeyi içeren stored procedure ve fonksiyonları hızlıca bulmak, bakım ve geliştirme süreçlerinde büyük kolaylık sağlar. Bu yazıda, SQL Server’da belirli bir kelimeyi aramak için kullanabileceğiniz yöntemleri adım adım inceleyeceğiz.

1. INFORMATION_SCHEMA.ROUTINES Tablosunu Kullanarak Arama

SQL Server’da INFORMATION_SCHEMA.ROUTINES tablosu, veritabanınızdaki tüm stored procedures ve fonksiyonlar hakkında temel bilgileri içerir. Bu tabloyu kullanarak, belirli bir anahtar kelimeyi içeren prosedür ve fonksiyonları kolayca bulabilirsiniz.

Örnek Sorgu:

SELECT 
    ROUTINE_TYPE, 
    ROUTINE_NAME 
FROM 
    INFORMATION_SCHEMA.ROUTINES 
WHERE 
    ROUTINE_DEFINITION LIKE '%aranan_kelime%' 
    AND ROUTINE_TYPE IN ('PROCEDURE', 'FUNCTION');
  • ROUTINE_TYPE: Bu sütun, aranan nesnenin bir PROCEDURE (saklı yordam) ya da FUNCTION (fonksiyon) olup olmadığını gösterir.
  • ROUTINE_NAME: Anahtar kelimeyi içeren stored procedure veya fonksiyonun adını döndürür.
  • aranan_kelime: Aramak istediğiniz kelimeyi %aranan_kelime% ifadesinin yerine yazmalısınız.

Bu sorgu, INFORMATION_SCHEMA.ROUTINES tablosundan, belirttiğiniz kelimeyi içeren tüm prosedür ve fonksiyonların adlarını ve türlerini listeler.

2. sys.objects ve sys.sql_modules Tablolarını Kullanarak Arama

Daha kapsamlı bir arama yapmak için sys.objects ve sys.sql_modules tablolarından faydalanabilirsiniz. Bu tablolar, SQL Server’da oluşturulan tüm nesneler hakkında daha ayrıntılı bilgiler sunar. Özellikle SQL kodlarının tanımlandığı sys.sql_modules tablosu, saklı yordamlar ve fonksiyonların içeriklerini incelemek için idealdir.

SELECT 
    o.type_desc AS ROUTINE_TYPE,
    o.name AS ROUTINE_NAME
FROM 
    sys.objects o
INNER JOIN 
    sys.sql_modules m ON o.object_id = m.object_id
WHERE 
    m.definition LIKE '%aranan_kelime%'
    AND o.type IN ('P', 'FN', 'TF', 'IF');
  • sys.objects: Veritabanındaki tüm nesneleri (tablolar, prosedürler, fonksiyonlar vb.) içeren bir tablo.
  • sys.sql_modules: SQL nesnelerinin kod tanımlarını (SQL script’leri) barındırır.
  • type_desc: Nesnenin türünü (örneğin, SQL_STORED_PROCEDURE ya da SQL_SCALAR_FUNCTION) belirtir.
  • name: Anahtar kelimeyi içeren nesnenin adını döndürür.
  • aranan_kelime: %aranan_kelime% ifadesinin yerine aramak istediğiniz kelimeyi yazmalısınız.

Bu sorgu, saklı yordamlar (P), scalar-valued fonksiyonlar (FN), table-valued fonksiyonlar (TF), ve inline table-valued fonksiyonlar (IF) gibi nesnelerde belirli bir anahtar kelimenin geçtiği tüm nesne isimlerini listeler.

Hangi Yöntemi Kullanmalısınız?

  • Kullanımı Kolay ve Basit Aramalar İçin: INFORMATION_SCHEMA.ROUTINES tablosu, hızlı ve pratik bir çözüm sunar. Özellikle küçük ölçekli veritabanlarında, belirli bir kelimenin varlığını tespit etmek için idealdir.
  • Daha Kapsamlı ve Ayrıntılı Aramalar İçin: sys.objects ve sys.sql_modules tablolarını kullanarak yapılan sorgular, daha fazla bilgi sunar ve büyük veritabanlarında daha esnek bir çözüm sağlar.

Sonuç

SQL Server’da stored procedure ve fonksiyonların içeriğinde belirli bir anahtar kelime aramak, geliştirme ve bakım süreçlerini önemli ölçüde hızlandırabilir. Bu yazıda verdiğimiz iki yöntemle, belirli bir işlevi ya da sorguyu bulmak ve güncellemek çok daha kolay hale gelir. İhtiyacınıza göre bu yöntemlerden birini tercih ederek, veritabanı yönetiminizi daha verimli hale getirebilirsiniz.

Umarız bu rehber, SQL Server’daki sorgularınızı daha etkili hale getirmenize yardımcı olur. Başka sorularınız veya ihtiyaç duyduğunuz SQL ipuçları varsa, yorumlarda paylaşabilirsiniz!

Loading