Hình ảnh sau đây là một phần của Chế độ xem hệ thống Microsoft SQL Server 2008 R2. Từ hình ảnh chúng ta có thể thấy rằng mối quan hệ giữa sys.partitions
và sys.allocation_units
phụ thuộc vào giá trị của sys.allocation_units.type
. Vì vậy, để kết hợp chúng lại với nhau, tôi sẽ viết một cái gì đó tương tự như thế này:
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
Nhưng mã trên cho một lỗi cú pháp. Tôi đoán đó là vì CASE
tuyên bố. Bất cứ ai có thể giúp để giải thích một chút?
Thêm thông báo lỗi:
Msg 102, Cấp 15, Trạng thái 1, Dòng 6 Cú pháp không chính xác gần '='.