这里是普通文章模块栏目内容页
将数据库兼容性由80提升到90引发的错误

为使用2005提供的新功能如行列转换pivot将将数据库兼容性由80提升到90,
sp_dbcmptlevel @dbname=’brm_lvjian’, @new_cmptlevel=90
报错:如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
语句为:
SELECT distinct a.orderno,
CONVERT(varchar(10), OrderDate, 20) AS OrderDate
FROM bdorder a
WHERE a.OrderDate >=’2011-02-01′
ORDER BY a.OrderDate
原因在80(sqlserver2000) 中对于ORDER BY 将忽略列前缀。故上面的ORDER BY a.OrderDate执行的是ORDER BY OrderDate
而在90(2005)中是不忽略列前缀的,上面的ORDER BY a.OrderDate因在select中不存在,故报错!
注:查看数据库兼容级别:数据库 – 属性 – 选项