2017-01-23 112 views
0

我试图从SQL Server 2012迁移到2016,并且已经运行Microsoft Database Migration Assistant。在移民助理中,我只是试图说明重大变化。其中一个突破性变化如下所示。ORDER问题尝试从SQL Server 2012迁移到2016时

select 
Name1 as 'Name', 
Age1 as 'Age' from Table 
order by 'Name' 

以下说明即将出炉。

当数据库兼容性模式设置为80或更低版本时,ORDER BY子句中允许(并忽略)常量表达式。但是,当数据库兼容性模式设置为90或更高版本时,ORDER BY子句中的这些表达式将导致语句失败。

这里是这样的问题陈述的例子:

SELECT * FROM Production.Product 
ORDER BY CASE WHEN 1=2 THEN 3 ELSE 2 END 

然而,创建相同的架构和运行在SQL Server 2016相同的代码后,该声明似乎是工作的罚款。我错过了什么?

回答

1

试试这个

select 
Name1 as Name, 
Age1 as Age from Table 
order by Name 
+0

感谢您的评论。但是我的问题更像是我写的东西是否有问题。因为我给出的别名和DBA给出的例子似乎不太相似...... –

0

我觉得不是,如果迁移助理看到订单的暗示by子句,它只是给出警告评估表达式。凌乱我知道,但@ Esperento57的方法是实现它的唯一方法。