2009-10-13 2 views
1

Одна из баз данных, которые я разрабатываю, обновляется до 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 как-то (хотя они компилируются просто отлично), то я также хотел бы это знать.

Благодаря ...

ответ

1

Из того, что я изначально только для чтения псевдонима столбца в ORDER BY caluse не может предваряться псевдонимом таблицы, и это приведет к Upgrade Advisor жаловаться. Если вы захватили трассировку рабочей нагрузки с помощью Profiler, UA может проанализировать трассировочный файл и определить злоумышленный SQL, чтобы вы знали, где и что исправить.

Я также читал, что он больше не кажется проблемой и, возможно, исправлен, но это не подтвердило MS из того, что я мог найти.

Надеюсь, это поможет!

+0

Но разве это не псевдонимы столбцов? Наверное, я не уверен, потому что у них одно и то же имя. Какой из них используется? – Vaccano

+0

Правильно, и я не думаю, что UA это понимает. – ajdams

Смежные вопросы