[SQL]使用 sp_refreshview 更新 View 的 Metadata

Table改後,有用到它的View需要Alter或是重建嗎?
可以利用 sp_refreshview 哦!

有時 Table Schema 修改後,當執行有使用到該 Table 的 View 時,

會發現 View 傳回來的資料怪怪的。

這時我們常常都是 Alter 或是 重建 那個 View。

 

但發現 View 有問題,再 Alter or ReCreate View 似乎不太好(有可能是客戶跟你報錯時,才發現)!

所以我們可以在調整完 Table Schema 後,透過 sp_refreshview 來更新 View 的 Metadata。

利用 msdn 的 SQL,來更新有用到該 Table 的 View ,如下,


SELECT DISTINCT 'EXEC sp_refreshview ''' + name + '''' 
FROM sys.objects so INNER JOIN sys.sql_dependencies sd 
ON so.object_id = sd.object_id 
WHERE type = 'V' 
AND sd.referenced_major_id = object_id('更新的TableName');

image

 

參考資料

sp_refreshview

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^