# SQL Server'da View Değişiklikleri Neden Hafife Alınmamalı?

View'lar "sadece bir sorgu" gibi görünür. Değiştirmek kolay. Risk düşük gibi hissettiriyor. Ama view'lara dayanan onlarca rapor, uygulama ekranı ve başka view varsa bu his yanıltıcı.

View Değişikliğinin Gizli Etki Alanı Bir view değiştirildi. Ne etkilendi?

Bu view'ı kullanan raporlar Bu view'ı kullanan stored procedure'ler Bu view'ın üzerine kurulu başka view'lar (nested view) Bu view'a bağlı uygulama ekranları Bu view'ı kullanan SSIS paketleri

Bunların tamamını bilmeden yapılan bir view değişikliği beklenmedik yerlerde kırılmalara yol açar.

View Bağımlılıklarını Tespit Etmek sql-- Bir view'a bağımlı tüm nesneleri listele SELECT referencing\_schema\_name AS Sema, referencing\_entity\_name AS NesneAdi, referencing\_class\_desc AS NesneTipi FROM sys.dm\_sql\_referencing\_entities('dbo.vw\_SatisOzeti', 'OBJECT') ORDER BY referencing\_class\_desc, referencing\_entity\_name; sql-- View'ın bağımlı olduğu nesneleri listele SELECT referenced\_schema\_name AS Sema, referenced\_entity\_name AS NesneAdi, referenced\_class\_desc AS NesneTipi FROM sys.dm\_sql\_referenced\_entities('dbo.vw\_SatisOzeti', 'OBJECT') ORDER BY referenced\_class\_desc, referenced\_entity\_name;

Yaygın View Değişikliği Senaryoları Kolon eklenmesi Görece güvenli. Ama view'ı SELECT \* ile kullanan kodlar beklenmedik kolon alabilir. Kolon kaldırılması Yüksek riskli. View'ı kullanan her nesne bu kolona erişemez hale gelir. Sessiz hata ya da açık hata olabilir. Kolon sırası değiştirilmesi SELECT \* kullanan kodlarda veriler yanlış eşleşebilir. Tespit etmek çok zor. JOIN veya WHERE mantığı değiştirilmesi Dönen veri seti değişir. Doğru sonuç verip vermediği bağımlı nesneler test edilmeden bilinemez.

Indexed View Değişikliği Indexed view üzerinde index varsa değişiklik daha da kritik. sql-- Indexed view'ları listele SELECT v.name AS ViewAdi, i.name AS IndexAdi, i.type\_desc AS IndexTipi FROM sys.views v JOIN sys.indexes i ON v.object\_id = i.object\_id WHERE i.index\_id > 0 ORDER BY v.name; Indexed view değiştirilmek istendiğinde index önce düşürülmeli, view güncellenmeli, index yeniden oluşturulmalı. Bu üç adımlı süreç değişiklik talebinde açıkça belirtilmeli.

View Değişikliklerini Değişiklik Sürecine Dahil Etmek View değişikliği talebinde şu bilgiler zorunlu olmalı: Hangi view değişiyor? Neden değişiyor? Bağımlılık analizi yapıldı mı, sonuçlar neler? Test ortamında bağımlı nesneler test edildi mi? Bu bilgiler olmadan view değişikliği onaylanmamalı.

Sonuç View'lar görünmez bağımlılık ağları oluşturur. Değişiklik yönetimi kapsamında ele alınmadığında küçük bir view güncellemesi onlarca nesneyi etkileyebilir. Bağımlılık analizi bu riski yönetilebilir kılar. Detaylı bilgi için: sqlchangeguard.com
