Sql-Server
SQL Server 表和視圖顯示不同的值
我有一個從顯示不同數據的表中選擇數據的視圖。
表是
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;
我為其中一個欄位得到不同的值。見附圖:
任何想法這是如何發生的?該表是聚集的,具有 pk 和唯一索引。
創建視圖時,它會綁定到執行所需的元數據。
注意: https ://msdn.microsoft.com/en-us/library/ms187821.aspx
這就是說
sp_refreshview
:“更新指定的非模式綁定視圖的元數據。由於視圖所依賴的基礎對象的更改,視圖的持久元數據可能會變得過時。”過時的元數據綁定會導致令人驚訝的“錯誤”結果。使用模式綁定視圖是避免該問題的一種方法。
閱讀 Aaron Bertrand 發布的連結: