当视图引用的表对象修改后,视图的元数据可能就过时了。例如,如果更改在视图定义中引用的列的宽度,那么在刷新元数据之前新的宽度可能不会生效。在这个技巧中,会演示在视图定义中引用
的依赖对象修改后,如何刷新视图的元数据:
USE AdventureWorks
GO
EXEC sp_refreshview 'dbo.v_product_TransactionHistory'
也可以使用系统存储过程sp_refreshsqlmodule,它不仅仅可以使用在视图上,也可以使用到存储过程、触发器和用户定义函数上:
USE AdventureWorks
GO
EXEC sys.sp_refreshsqlmodule @name='dbo.v_product_TransactionHistory'
如果视图的SELECT查询定义引用的基础对象修改了,可以使用sp_refrashview或sys.refreshsqlmodule存储过程来刷新视图的元数据。这个系统存储过程只接受一个参数,那就是视图的名称。