SQL SERVER2012出现ORDER BY DESC 列名显示 ' ' 无效?

语句在SQL2000、2005上执行都没有问题,结果发现是SQL Server数据库的兼容级别导致,由于现在是SQL2012,不能设置为80,怎么各位高手怎么解决哦,谢谢

SELECT name ,compatibility_level ,recovery_model_desc FROM sys.databases WITH(NOLOCK) --查询显示是90

EXEC sp_dbcmptlevel 数据库,80 --在SQL2012直接这样执行有问题么?

ORDER BY 后面应该是加上字段名,也就是你要排序的字段。DESC表示排序从大到小。如果不想排序,就把ORDER BY DESC 这段去掉。

EXEC sp_dbcmptlevel 数据库,80表示的是把数据库的兼容级别调整到80,也就是兼容sqlserver2000的语法(一些语法规则已经被高版本的sqlserver摒弃,调整兼容级别可以让高版本的sqlserver兼容低版本的语法)。在sqlserver2012里这么执行也是没问题的。

追问

这是系统里自带的语法,由于不想升级系统,所以只想在数据库里更新,但是在SQL2012里没有看到 SQL2000的80值。如果直接用命令执行有用么?因为客户数据库比大,以免出问题。

追答

理论上来说执行命令是没问题的,这个命令就是调整兼容性的。

追问

但是执行不了哦,请问有没别的办法?
(9 行受影响)
消息 15416,级别 16,状态 1,过程 sp_dbcmptlevel,第 66 行
用法: sp_dbcmptlevel [dbname [, compatibilitylevel]]
数据库兼容级别的有效值为 90、100 或 110。

追答

嗯,查了一下,2012兼容性最低就到90,所以只能设置成90看看了

追问

90试过了,也是兼容不了

追答

那没办法啦,要么不要升级到2012(可以到2008),要么把报错的sql都改一遍。

追问

2008的也不行,一样出会错,除非把2008的兼容性改成80才可以,现在问题是这个语句是系统直接跟踪出来的,而且客户又安装的是SQL 2012,好无语。

追答

对啊,2008可以改成80,2012没办法改。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网