# Stored Procedure Değişikliği Production'ı Nasıl Çökertir?

Stored procedure'ler veritabanının en kritik nesnelerinden biri. Uygulamalar onlara bağımlı, raporlar onlara bağımlı, bazen başka stored procedure'ler onlara bağımlı. Küçük bir değişiklik domino etkisi yaratabilir.

* * *

## Neden Bu Kadar Riskli?

Bir tablo değişikliğinde etki görece sınırlıdır. Ama bir stored procedure'ü değiştirdiğinizde şunların tamamını test etmek gerekir:

*   Bu procedure'ü çağıran uygulamalar
    
*   Bu procedure'ü çağıran diğer procedure'ler
    
*   Bu procedure'e bağlı raporlar
    
*   Bu procedure'ü kullanan zamanlanmış işler
    

Çoğu DBA bu bağımlılıkları kafasından biliyor ama "biliyor olmak" ile "test etmiş olmak" arasında production krizi kadar fark var.

* * *

## En Sık Yaşanan Senaryolar

**Parametre değişikliği**

Bir stored procedure'e yeni parametre eklendi. Varsayılan değer verilmedi. Eski çağrımlar parametre sayısı uyuşmadığı için hata vermeye başladı. Hangi uygulama bu procedure'ü çağırıyor? Kaç yerde?

**Return değeri değişikliği**

Procedure bir kolon daha döndürmeye başladı. Sonucu belirli bir sırayla okuyan uygulama yanlış kolonu işlemeye başladı. Hata açık vermedi, sessizce yanlış veri işlendi.

**İş mantığı değişikliği**

Bir hesaplama güncellenidi. Test ortamında çalıştı. Ama production'daki veri dağılımı farklıydı, edge case'ler production'da ortaya çıktı.

* * *

## Bağımlılık Analizi Nasıl Yapılır?

Değişiklik öncesi şu sorguyu çalıştırın:

sql

```sql
SELECT
    referencing_schema_name,
    referencing_entity_name,
    referencing_class_desc
FROM sys.dm_sql_referencing_entities('dbo.ProcedureAdi', 'OBJECT')
ORDER BY referencing_entity_name;
```

Bu sorgu ilgili procedure'e bağımlı tüm nesneleri listeler. Ama dikkat: sadece veritabanı içindeki bağımlılıkları gösterir. Dış uygulamaların bağımlılıkları bu sorguda görünmez.

* * *

## Değişiklik Öncesi Kontrol Listesi

Bir stored procedure'ü değiştirmeden önce şu soruları yanıtlayın:

Bu procedure'ü hangi uygulamalar çağırıyor? Bu uygulamaların geliştiricilerine haber verildi mi? Test ortamında bağımlılıklar test edildi mi? Rollback planı hazır mı? Deployment zamanı uygun mu, yani yoğun olmayan bir saatte mi?

* * *

## Sonuç

Stored procedure değişiklikleri basit görünür ama etki alanı geniştir. Her değişiklik bağımlılık analizi, test ve onay sürecinden geçmeli.

Detaylı bilgi için: [sqlchangeguard.com](http://sqlchangeguard.com)
