A imagem a seguir faz parte do Microsoft SQL Server 2008 R2 System Views. A partir da imagem, podemos ver que a relação entre sys.partitions
e sys.allocation_units
depende do valor de sys.allocation_units.type
. Então, para juntá-los, eu escreveria algo semelhante a este:
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
Mas o código superior fornece um erro de sintaxe. Eu acho que é por causa da CASE
declaração. Alguém pode ajudar a explicar um pouco?
Adicionar mensagem de erro:
Msg 102, Nível 15, Estado 1, Linha 6 Sintaxe incorreta próxima a '='.