Обновление / компиляция SQL Server 2008 - псевдоним столбца и псевдоним таблицы - PullRequest
1 голос
/ 13 октября 2009

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

Спасибо ...

1 Ответ

1 голос
/ 13 октября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...