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来刷新.
相关链接: