Одна из баз данных, для которых я разрабатываю, обновляется до SQL 2008 (с SQL 2000).
Советник по обновлению отмечает проблему, которую я не считаю проблемой. Я надеялся, что есть документация, что это известная проблема, так что моя команда БД просто пропустит ее.
Ошибка говорит о том, что в SQL 2008 нельзя использовать псевдоним таблицы и псевдоним столбца вместе. В нем также сказано, что 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
В каждом сценарии создается псевдоним, который соответствует фактическому имени столбца (обычно это не очень хорошая идея, я согласен).
Тем не менее, они прекрасно компилируются в SQL 2008 (с уровнем совместимости, установленным на 10). Я думаю, что Upgrade Advisor просто запутался, потому что псевдоним совпадает с именем столбца. Я согласен с тем, что здесь есть некоторый «менее желательный код». Но я не думаю, что его нужно менять, чтобы перейти на SQL 2008.
Меньше вещей, которые мы можем изменить с помощью этого обновления, означает меньше вещей, на которые стоит обратить внимание, если что-то сломается, когда мы запускаем в производство.
Если кто-нибудь знает какую-либо документацию, в которой говорится, что это известное ограничение, пожалуйста, дайте мне знать.
Кроме того, если я ошибаюсь, и они не разрешены каким-либо образом в SQL 2008 (хотя они компилируются просто отлично), то я также хотел бы знать это.
Спасибо ...