View’ları Güncellemenin Önemi

Reading Time: 2 minutes

Tablomuza yeni bir kolon eklediğimizde var olan View da ki davranışı gözlemleyeceğiz.

Örnek tablomuzu oluşturalım ,

Örnek bir kaç veri basalım tablomuza,

Şimdide bu tabloyu full çeken bir View oluşturalım ,

Oluşturduğumuz View ile data çekelim ,

Şimdi ise tablomuza bir kolon ekleyelim ,

Şimdi View ‘ımız tekrar çektiğimizde yeni eklenen kolonun sonuç kümeisnde dönmediğini aşağıda görmektesiniz.

Peki bu durumu nasıl düzelteceğiz diye sorduğunuzu duyar gibiyim. Ya da diğer bir sorunuz ise bu neden ve ne için bu şekilde oldu tüm datayı çekmek istememize rağmen !!!

İlk etapta neden bu şekilde sonuç getirdiğine açıklık getirmek gerekir ise , SQL Server View dan dönecek kolon bilgilerini metadata tablolarında saklamasından dolayı SELECT * ile oluşturulan View larda yeni eklenen kolonlar sonuca yansımamaktadır.

Örneğimizdeki View ın kolon bilegilerine metadata tablosundan erişmek istediğimizde ;

Gördüğünüz üzere View ‘ımızın tüm bilgileir metadata tablolarına işlenmiş durumda. Peki bu durumu nasıl düzeltebiliriz ?

Aslında en kullanışlı ve sağlıklı çözüm yöntemi sp_refreshView sistem prosedürü ile View ‘ın güncellenmesini sağlamaktır. Bu şekilde View ‘ın arkatarafta metadata tablolarında ki bilgileride güncellenir ve tekrar View ‘ı çekmek istediğinizde kolon bilgisini görmüş olursunuz.

Gördüğünüz üzere artık yeni eklediğimiz kolonumuz da sonuca gelmektedir .

Tekrar metadata tablosunu sorguladığımızda ,

 

NOT 1 : Veritabanımız da ki tüm View ları belirli periyotlar ile Reflesh leme yapabilmeniz için bu makaleyi okuyunuz…

NOT 2 : DB üzerinde ki değilde sadece o tablo üzerinde değişiklik yapıldığından o tablou içeren tüm View ları Reflesh yapmak ister isek,

Yukarıda ki script içerisinde OBJECT_ID bölümüne tablomuzun adını yazıyoruz ve bu şekilde query mizi EXEC ettiğimizde aşağıda ki gibi sonuç çıkmaktadır.

Script bölümünde ne kadar View sonucu çıkıyor ise kopyalanıp query ekranında EXEc edilrek bu şekilde kolon eklenen tablo nun içerildiği tüm view lar güncellenmiş olacaktır.

 

Kolay Gelsin.

Leave a Reply

Your email address will not be published. Required fields are marked *