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 和唯一索引。
创建视图时,它会绑定到执行所需的元数据。
注意:https : //msdn.microsoft.com/en-us/library/ms187821.aspx
这就是说sp_refreshview:“更新指定的非架构绑定视图的元数据。视图的持久元数据可能会因为视图所依赖的底层对象的更改而过时。”
过时的元数据绑定会导致令人惊讶的“错误”结果。使用模式绑定视图是避免该问题的一种方法。
阅读 Aaron Bertrand 发布的链接:
| 归档时间: |
|
| 查看次数: |
1682 次 |
| 最近记录: |