我开发的数据库之一正在升级到SQL 2008(来自SQL 2000)。SQL Server 2008升级/编译 - 列别名和表别名
升级顾问正在标记一个我认为不是问题的问题。我希望有文件证明这是一个已知的问题,所以我的数据库团队会让它通过。
错误是说,在2008年SQL你不能使用表别名和列别名在一起。它还说,使用这些sprocs不会编译。
这里是不同的SQL方案的导致此:
select
case
when tblOneAlias.COLUMN_NAME is null then tblTwoAlias.COLUMN_NAME
else tblOneAlias.COLUMN_NAME
end as COLUMN_NAME
from tblOne tblOneAlias
join tblTwo tblTwoAlias
on tblOneAlias.JOIN_VALUE = tblTwoAlias.JOIN_VALUE
order by tblOneAlias.COLUMN_NAME, tblTwoAlias.COLUMN_NAME
select tblAlias.COLUMN_NAME as 'COLUMN_NAME'
from tblName tblAlias
order by tblAlias.COLUMN_NAME
select COLUMN_NAME = tblAlias.COLUMN_NAME
from tblName tblAlias
order by tblAlias.COLUMN_NAME
在每个场景的别名创建匹配es实际的列名(通常不是我认同的好主意)。
然而,他们在编译SQL 2008(设置为10兼容级别)就好了。我认为升级顾问只是混淆,因为别名与列名相同。我同意在这里有一些“不太需要的代码”。但我不认为它需要改变升级到SQL 2008
越少的东西,我们可以改变这个升级意味着更少的东西来看看,如果当我们推出到生产的东西打破。
如果任何人的任何文件说这是一个已知的限制,那么请让我知道知道。
而且,如果我错了,这些都不是在2008年SQL某种程度上允许的(尽管它们编译就好了),那么我也想知道。
谢谢...
但这些不是真正的列别名是他们?我想我不确定,因为他们是同一个名字。哪一个被使用? – Vaccano 2009-10-13 16:38:18
没错,我不认为UA明白这一点。 – ajdams 2009-10-13 17:25:29