2009-10-13 8 views
1

L'une des bases de données pour lesquelles je développe est mise à niveau vers SQL 2008 (à partir de SQL 2000).SQL Server 2008 Upgrade/compile - Alias ​​de colonne et alias de table

Le conseiller de mise à niveau est en baisse un problème que je ne pense pas est un problème. J'espérais qu'il y ait de la documentation indiquant que c'est un problème connu pour que mon équipe DB le laisse passer.

L'erreur dit que dans SQL 2008, vous ne pouvez pas utiliser un alias de table et un alias de colonne ensemble. Il dit aussi que les sprocs qui les utilisent ne compileront pas.

est que de différents scénarios SQL sont à l'origine ceci:


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 

Dans chaque scénario un alias est créé ce match es le nom de la colonne réelle (pas habituellement une bonne idée, je suis d'accord).

Cependant, compilent très bien dans SQL Server 2008 (avec le niveau de compatibilité réglé sur 10). Je pense que le conseiller de mise à niveau est juste confus parce que l'alias est le même que le nom de colonne. Je suis d'accord qu'il y a un «code moins que souhaitable» ici. Mais je ne pense pas que cela doive être changé pour passer à SQL 2008.

Le moins de choses que nous pouvons changer avec cette mise à jour signifie qu'il y a moins de choses à regarder si quelque chose se brise quand nous allons en production.

Si quelqu'un connaît une documentation indiquant qu'il s'agit d'une limitation connue, veuillez me le faire savoir.

Aussi, si je me trompe et que ceux-ci ne sont pas autorisés dans SQL 2008 en quelque sorte (bien qu'ils compilent très bien) Je voudrais ensuite aussi le savoir.

... Merci

Répondre

1

D'après ce que je lis d'abord seulement un alias de colonne dans la ORDER BY caluse ne peuvent pas être préfixées par un alias de table et ce causeront Upgrade Advisor pour se plaindre. Si vous capturez une trace de la charge de travail à l'aide de Profiler, UA peut analyser le fichier de trace et identifier le SQL incriminé afin de savoir où/quoi corriger.

J'ai aussi lu qu'il ne semble pas être un problème plus et était peut-être fixé, mais cela n'a pas été confirmée par MS de ce que je pouvais trouver.

Espérons que cela aide!

+0

Mais ce ne sont pas vraiment des alias de colonnes, n'est-ce pas? Je suppose que je ne suis pas sûr parce qu'ils sont le même nom. Lequel est utilisé? – Vaccano

+0

Oui, et je ne pense pas que UA le comprend. – ajdams