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

Posted on 2016-02-18 18:22:00

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