Eu tenho uma visão que seleciona dados de uma tabela que mostra dados diferentes.
A tabela é dbo.user
, a visão é dbo.users
(não julgue, eu herdei esse sistema). A vista é simplesmente select * from table
.
Se eu executar as seguintes instruções:
SELECT Field1, Field2 FROM dbo.[User] WITH (NOLOCK) ORDER BY Field1;
SELECT Field1, Field2 FROM dbo.Users WITH (NOLOCK) ORDER BY Field1;
Recebo valores diferentes para um dos campos. Veja a foto em anexo:
Alguma ideia de como isso acontece? A tabela está agrupada, possui um pk e um índice exclusivo.
Quando uma visualização é criada, ela é vinculada aos metadados de que precisa para ser executada.
Observação: https://msdn.microsoft.com/en-us/library/ms187821.aspx
Isso diz que
sp_refreshview
: "Atualiza os metadados para a exibição não vinculada ao esquema especificada. Os metadados persistentes para uma exibição podem ficar desatualizados devido a alterações nos objetos subjacentes dos quais a exibição depende."A ligação de metadados desatualizada causa resultados surpreendentes "errados". O uso de exibições vinculadas ao esquema é uma maneira de evitar o problema.
Leia o link que Aaron Bertrand postou: