sp_refreshview的功能描述為刷新指定視圖的元數據由於視圖所依賴的基礎對象的更改視圖的持久元數據會過期由於sp_refreshview的代碼被封裝了(沒有公開)所以我們看不到它的內部實現不過看了這個存儲過程的描述你是否對視圖有了新的認識呢?
從這裡我們可以看到當我們使用一個視圖查詢數據的時候其實我們是在使用視圖的元數據來查詢的當視圖依賴的對象發生了變化以後視圖的元數據就需要更新這樣使用視圖時才不會違背我們的意願
知道了問題的產生的原因後那麼我們在重新修改一個表或視圖的腳本時我們就需要更新依賴於該對象的視圖否則就會出現意想不到的錯誤如何找到依賴於該對象的對象(包括視圖觸發器存儲過程)呢?SqlServer在該數據庫的系統表sysdepends裡記錄這些依賴關系所以你可以查詢該表獲取你想要的信息但其實你可以通過使用系統提供的存儲過程sp_depends來獲取該對象的所依賴的對象(返回的第一個表)以及依賴於該對象的對象(返回的第二個表)腳本如下
查詢vCustomersA的依賴的對象以及依賴於vCustomersA的對象
exec sp_depends vCustomersA
[] [] [] [] []
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22389.html