我们有一个View(称之为X),它是由其他2个视图调用的基本视图(称为Y和Z).
今天我们进行了更改以查看X,在该视图之后,Y和Z开始返回不正确的数据.当我们在Management Studio中运行时Select * from Y
(这正是代码中调用视图的方式),它将返回不正确的数据.但是,当我们运行视图包含它的实际SQL时很好.我们尝试了很多东西,直到一位同事建议添加一个空格来查看X和Z,然后运行Alter,这是有效的.一切恢复正常,运行良好.
我的问题是:MSSQL是否缓存其视图?如果是这样,你怎么强迫他们不要强迫他们重新编译?
此外,任何有关此的额外阅读将是有帮助的.
请参见sp_refreshview命令.
更新指定的非架构绑定视图的元数据.由于视图所依赖的基础对象的更改,视图的持久元数据可能会过时.
SQL Server不会缓存视图数据(至少不会像您指的那样).
如果视图定义包含"SELECT*",则在创建视图时定义实际列列表,即"SELECT*"由实际列列表替换,而不是在创建视图时存在.这意味着如果向该视图引用的基础表添加列,则该列不会显示在视图中.