SQL Server’da Tüm Viewları sp_refreshview Prosedürü ile Yenilemek

Herkese merhaba,

Bu yazıda SQL Server’da tüm viewları sp_refreshview prosedürü ile yenilemek hakkında bilgi vereceğim.

Aslına bakarsanız konu yazılım tarafını da ilgilendirmekte.  Nedenine gelince.

SQL Server’da bir view oluşturdunuz diyelim. Bu view’ın select sorgusu ile tüm kolonları çektiğini varsayalım. Buraya kadar sıkıntı yok.

Sonrasında bu view’ı kullanan tablomuza bir alan ekleyelim.

View sorgumuza select attığımız zaman bu kolonu göremeyeceğiz.

Bunun çözümü tek bir view için aşağıdaki gibi olabilir.

View’i Alter edebilirsiniz.
View’i Drop edip sonrasında Create edebilirsiniz 
sp_refreshview prosedürünü kullanabilirsiniz.

Tabi yüzlerce view kullanıyorsanız takip etmek biraz zor olabilir. Bu yüzden Tüm Viewları sp_refreshview Prosedürü ile Yenilemek adı altında bir yazı yazmak istedim.

Aşağıdaki kod ile bu işlemi oldukça kolay yapabilirsiniz.

DECLARE @sqlkomut NVARCHAR(MAX) = N'';
SELECT @sqlkomut = @sqlkomut + N'EXEC sp_refreshview ''' + name + N''';
'
FROM sys.objects AS so
WHERE so.type = 'V';

--Dinamik sorguyu görüntülemek 

SELECT @sqlkomut;

--Dinamik sorguyu doğrudan çalıştırmak için aşağıdaki yorum satırını açın SELECT @sqlkomut kısmını yoruma alın.

--EXEC(@sqlkomut)

Kodu çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.

SQL Server’da Tüm Viewları sp_refreshview Prosedürü ile Yenilemek

Results kısmında gördüğünüz kodları kopyalayıp, ekrana yapıştırıp dilediğinizi çalıştırabilirsiniz ya da SELECT @sqlkomut satırını yorum haline getirip EXEC(@sqlkomut) satırını yorum halinden çıkarıp komple tüm viewlar için bu işlemi yapabilirsiniz.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

378 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!