数据库刚从2000升级到2005,在2000中备份,到2005中新建和还原,结果打开视图都不按指定的ORDER BY排序,在设计视图状态运行可以得到ORDER BY 的排序结果,打了SP3还是没有用。

解决方案 »

  1.   

    http://simon-fish.iteye.com/blog/844665现象: 在SQL Server2005中,出于优化系统的目的,在视图、子查询中嵌套order by时,sql优化器将忽略order by——即不保存内查询语句结果的顺序。  在一定的场合下——如单个查询语句,这样确实起到强制优化的效果。但对做通用查询工具类来讲,有些地方确实需要排序。 解决方案:
      

  2.   

    在SQL 2005/2008中,将TOP(100)Percent ... ORDER BY ...子句忽略掉了,不做处理,所以显得排序乱了。其实SQL 2005/2008中的做法是正确的,而SQL 2000中的做法是错误的,是不符合数据库原则的。视图中的数据本来就不应该有序,强行在视图中对数据进行排序是错误的做法,不但违反规则,而且低效。应该在引用视图时排序,如:select * from viewname order by colname
      

  3.   


    2008视图中order by 没有作用,跟2000的完全不一样,我也遇到这样的问题,没有办法,只能在视图外重新加order by 了