SQL Server 2005视图及子查询ORDER BY语句的解决方案
现象:在SQL Server2005中,出于优化系统的目的,在视图、子查询中嵌套order by时,sql优化器将忽略order by——即不保存内查询语句结果的顺序。
在一定的场合下——如单个查询语句,这样确实起到强制优化的效果。但对做通用查询工具类来讲,有些地方确实需要排序。
解决方案:
1,语法解决:在需要排序的子查询语句中,在其select后面加入 top 100 percent 指令表示强制排序。
如:
原句
SELECT * FROM(
SELECT*
FROM CD_USER U
ORDER BY U.USER_CODE
) T
修改后:
SELECT * FROM(
SELECT TOP 100 PERCENT *
FROM CD_USER U
ORDER BY U.USER_CODE
) T
2,兼容SQL SERVER2000:安装补丁
2.1 安装补丁:
http://support.microsoft.com/kb/926292/
2.2 配置数据库兼容级别
数据库-》右键-》属性-》选项-》兼容级别=》选择SQL Server 2000(80)
2.3 设置启动项
在要SQL Server服务上启动参数上增加:-t168。启动SQL Server Configuration Mananger,选择SQL Server-》属性-》高级-》启动参数-》增加
页:
[1]