请教各位大牛  我的数据库 ms2000  数据库还原后 视图就失效了
比如一个视图
SELECT     li.LISTID, li.FOLDERID, li.FOLDERZLID, li.WH, li.JBR, li.ZBDW, li.TM, li.ND, li.GJC, li.WJJMC, li.STATE_DB, li.STATE_WD, li.STATE_ZL, li.STATE_GD, 
                      li.STATE_MB, li.IFENBALE, li.CREATETIME, li.CREATECODE, li.LEADSTATE, li.FILENAME, li.LeadTime, li.ShareTime, li.onlytag, li.ALTERSTATE, li.MIJI, 
                      li.guidangtime, li.oa_depname AS username, li.oa_depno AS stime, li.oa_number AS leadcode, li.oa_year, li.oa_month, li.oa_day, li.oa_paper_cop, 
                      li.oa_paper_type, li.oa_paper_year, li.oa_drafter_tel, li.oa_com_sendto, li.oa_com_copyto, li.oa_fuj, li.oa_keyword, li.oa_type, li.oa_beizhu, 
                      ui.username, si.stime, si.leadcode
FROM         dbo.yg_wd_list AS li INNER JOIN
                      dbo.yg_wd_sharelead AS si ON si.listid = li.LISTID AND si.state = 1 INNER JOIN
                      dbo.yg_wd_userinfo AS ui ON li.CREATECODE = ui.usercode
WHERE     (li.STATE_DB = 1)还原后查询结果是空的 null   而删掉视图重新创建后(sql语句和上面一致) 则可以正常显示   这是为什么呢!!!!
是我写的有问题 还是其他问题呢  
小弟不才 请各位大侠 不吝赐教!

解决方案 »

  1.   

    一样的语句,之前查询结果为空。重建后就可以正常提取出数据?
    没有碰到过类似的问题。不过有一点怀疑:
    1、第一次查询为null时,是否dbo.yg_wd_list/dbo.yg_wd_sharelead/dbo.yg_wd_userinfo都有数据?
      

  2.   

    据我的经验,有可能是你这个视图所依据的Table发生了变化,不信你检查你的表在还原前后的结构是否有不同。譬如增加新的字段等情况,在这个时候,需要刷新你的视图,但基于某个Table的视图可能不止这一个,送你一个刷新所有视图的一个过程,在修改表结构后使用,效果不错,可以免去视图意外失效的麻烦。
    create procedure refreshallviews as 
    declare   @ViewName   varchar(250)   
      declare   #views   cursor   for   select   name   from   sysobjects   
      where   objectproperty(id,N'IsView')=1   and   uid=1   order   by   name   
      open   #views   
      fetch   next   from   #views   into   @viewname   
      while   @@fetch_status=0   
      begin   
      print   '更新:   '+@viewname   
      exec   sp_refreshview   @viewname --更新视图   
      fetch   next   from   #views   into   @viewname   
      end   
      close   #views   
      deallocate   #views