在使用sqlserver 视图的过程中有时会发生如下情况,请大家帮忙看一下,谢谢!从视图中select 出的数据和 直接用创建视图的语句选出的数据有差异,但重新保存一次视图就没问题了,请问这是什么原因造成的?
sql如下:create view vi_test as select a.id,b.name from a,b where a.id=b.idSA:select * from vi_test
SB:select a.id,b.name from a,b where a.id=b.idSA和SB的结果集不同

解决方案 »

  1.   

    --表结构发生过变化?
    --try
    exec sp_refreshview 'vi_test'
      

  2.   

    这时候要用
    exec sp_refreshview 'vi_test'
    命令刷新
    或者
    alter
    修改视图
      

  3.   

    --对模块所基于的对象(影响模块的定义)进行更改时,应运行 sp_refreshsqlmodule。
    --否则,查询或调用该模块时,可能会产生意外结果。
    --若要刷新视图,可以使用 sp_refreshsqlmodule 或具有相同效果的 sp_refreshview。USE DBname;
    GO
    exec sys.sp_refreshsqlmodule @name = N'vi_test';