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 daFUNCTION
(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 daSQL_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
vesys.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!