Одна из баз данных, которые я разрабатываю, обновляется до SQL 2008 (из SQL 2000).Обновление или компиляция SQL Server 2008 - Псевдоним столбца и псевдоним таблицы
Советник по обновлению отмечает проблему, о которой я не думаю, является проблемой. Я надеялся, что есть документация, что это известная проблема, так что моя команда DB просто позволит ей пройти.
Ошибка в том, что в 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). Я думаю, что советник по модернизации просто запутан, потому что псевдоним совпадает с именем столбца. Я согласен с тем, что здесь есть «менее желательный код». Но я не думаю, что его нужно изменить для перехода на SQL 2008.
Чем меньше вещей мы можем изменить с помощью этого обновления, тем меньше вещей, которые нужно изучить, если что-то сломается, когда мы выходим на производство.
Если кто-нибудь знает какую-либо документацию, говорящую об этом известном ограничении, пожалуйста, дайте мне знать.
Кроме того, если я ошибаюсь, и они не разрешены в SQL 2008 как-то (хотя они компилируются просто отлично), то я также хотел бы это знать.
Благодаря ...
Но разве это не псевдонимы столбцов? Наверное, я не уверен, потому что у них одно и то же имя. Какой из них используется? – Vaccano
Правильно, и я не думаю, что UA это понимает. – ajdams