L'immagine seguente fa parte delle visualizzazioni di sistema di Microsoft SQL Server 2008 R2. Dall'immagine possiamo vedere che la relazione tra sys.partitions
e sys.allocation_units
dipende dal valore di sys.allocation_units.type
. Quindi per unirli insieme scriverei qualcosa di simile a questo:
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
Ma il codice superiore fornisce un errore di sintassi. Immagino che sia a causa della CASE
dichiarazione. Qualcuno può aiutare a spiegare un po '?
Aggiungi messaggio di errore:
Messaggio 102, livello 15, stato 1, riga 6 Sintassi errata vicino a '='.