L'image suivante fait partie des vues système de Microsoft SQL Server 2008 R2. De l'image, nous pouvons voir que la relation entre sys.partitions
et sys.allocation_units
dépend de la valeur de sys.allocation_units.type
. Donc, pour les réunir, j'écrirais quelque chose de similaire à ceci:
SELECT *
FROM sys.indexes i
JOIN sys.partitions p
ON i.index_id = p.index_id
JOIN sys.allocation_units a
ON CASE
WHEN a.type IN (1, 3)
THEN a.container_id = p.hobt_id
WHEN a.type IN (2)
THEN a.container_id = p.partition_id
END
Mais le code supérieur donne une erreur de syntaxe. Je suppose que c'est à cause de la CASE
déclaration. Quelqu'un peut-il aider à expliquer un peu?
Ajouter un message d'erreur:
Msg 102, niveau 15, état 1, ligne 6 Syntaxe incorrecte près de '='.