I want to see the size of a spacial index. I am usually using one of the following code blocks to get the indexes sizes of a given table, but none of them is working for a spatial index.
DECLARE @DataSource TABLE
(
[TableName] SYSNAME
,[IndexName] SYSNAME
);
INSERT INTO @DataSource ([TableName], [IndexName])
VALUES ('[dbo].[Table]', 'Index');
SELECT OBJECT_NAME(INX.[object_id]) AS TableName
,INX.[name] AS IndexName
,INX.[index_id] AS IndexID
,8 * SUM(AU.[used_pages]) AS 'Indexsize(KB)'
FROM [sys].[indexes] AS INX
INNER JOIN [sys].[partitions] AS PAR
ON PAR.[object_id] = INX.[object_id]
AND PAR.[index_id] = INX.[index_id]
INNER JOIN [sys].[allocation_units] AS AU
ON AU.[container_id] = PAR.[partition_id]
INNER JOIN @DataSource DS
ON INX.[object_id] = OBJECT_ID(DS.[TableName])
AND INX.[name] = DS.[IndexName]
GROUP BY INX.[object_id]
,INX.[index_id]
,INX.[name]
ORDER BY OBJECT_NAME(INX.[object_id])
,INX.[index_id]
OR
CREATE TABLE #CompressionResults
(
[object_name] SYSNAME
,[schema_name] SYSNAME
,[index_id] INT
,[partition_number] INT
,[size_with_current_compression_setting (KB)] BIGINT
,[size_with_requested_compression_setting (KB)] BIGINT
,[sample_size_with_current_compression_setting (KB)] BIGINT
,[sample_size_with_requested_compression_setting (KB)] BIGINT
)
INSERT INTO #CompressionResults
EXEC sp_estimate_data_compression_savings 'dbo', 'A', NULL, NULL, 'ROW' ;
SELECT CR.[object_name]
,IDX.[name]
,[size_with_current_compression_setting (KB)] / 1024 AS [current size (MB)]
,[size_with_requested_compression_setting (KB)] / 1024 AS [size after compression (MB)]
,([size_with_current_compression_setting (KB)] - [size_with_requested_compression_setting (KB)]) / 1024 AS [saved size (MB)]
FROM #CompressionResults CR
INNER JOIN [sys].[indexes] IDX
ON CR.[index_id] = IDX.[index_id]
AND OBJECT_ID(CR.[object_name]) = IDX.[object_id]
UNION ALL
SELECT CR.[object_name]
,'ALL'
,SUM([size_with_current_compression_setting (KB)]) / 1024 AS [current size (MB)]
,SUM([size_with_requested_compression_setting (KB)]) / 1024 AS [size after compression (MB)]
,SUM([size_with_current_compression_setting (KB)] - [size_with_requested_compression_setting (KB)]) / 1024 AS [saved size (MB)]
FROM #CompressionResults CR
GROUP BY CR.[object_name]
DROP TABLE #CompressionResults