SQL Server 表和视图显示不同的值

sql*_*wan 2 sql-server t-sql view

我有一个从显示不同数据的表中选择数据的视图。

表是dbo.user,视图是dbo.users(不要判断,我继承了这个系统)。观点很简单select * from table

如果我运行以下语句:

SELECT Field1, Field2 FROM dbo.[User] WITH (NOLOCK) ORDER BY Field1;

SELECT Field1, Field2 FROM dbo.Users WITH (NOLOCK) ORDER BY Field1;
Run Code Online (Sandbox Code Playgroud)

我为其中一个字段获得了不同的值。见附图:

在此处输入图片说明

任何想法这是如何发生的?该表是聚集的,具有 pk 和唯一索引。

RLF*_*RLF 7

创建视图时,它会绑定到执行所需的元数据。

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

这就是说sp_refreshview:“更新指定的非架构绑定视图的元数据。视图的持久元数据可能会因为视图所依赖的底层对象的更改而过时。”

过时的元数据绑定会导致令人惊讶的“错误”结果。使用模式绑定视图是避免该问题的一种方法。

阅读 Aaron Bertrand 发布的链接: