view引用其他的表或者view被更改时, 怎么刷新view的metadata

A引用了B,

也就是说B是更加底层的那个view, 现在它的schema被更改了.

 

那么我们要做两步:

第一步:

找出哪些view引用了它, 可以运行下图中的这段sql:

SELECT distinct 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('B')

运行这段sql找出了一个引用它的view 即A

 

第二步:

运行如下sql语句, 刷新引用者的元数据:

sp_refreshview 'A'

 

所以我们以后在更改一个表或视图的schema时, 可以用上面的这段sql看看有没有视图引用被更改的对象,如果有的话, 别忘了用sp_refreshview来刷新.

 

相关链接:

https://msdn.microsoft.com/en-us/library/ms187821.aspx

posted @ 2016-02-18 18:22  爱知菜  阅读(9)  评论(0编辑  收藏  举报