tôi sử dụng một cái gì đó tương tự như sau (mà cũng sẽ tính toán kích thước của XML chỉ số, ... nếu có)
SELECT S.name,
SO.name,
SIT.internal_type_desc,
rows = CASE WHEN GROUPING(SIT.internal_type_desc) = 0 THEN SUM(SP.rows)
END,
TotalSpaceGB = SUM(SAU.total_pages) * 8/1048576.0,
UsedSpaceGB = SUM(SAU.used_pages) * 8/1048576.0,
UnusedSpaceGB = SUM(SAU.total_pages - SAU.used_pages) * 8/1048576.0,
TotalSpaceKB = SUM(SAU.total_pages) * 8,
UsedSpaceKB = SUM(SAU.used_pages) * 8,
UnusedSpaceKB = SUM(SAU.total_pages - SAU.used_pages) * 8
FROM sys.objects SO
INNER JOIN sys.schemas S ON S.schema_id = SO.schema_id
INNER JOIN sys.internal_tables SIT ON SIT.parent_object_id = SO.object_id
INNER JOIN sys.partitions SP ON SP.object_id = SIT.object_id
INNER JOIN sys.allocation_units SAU ON (SAU.type IN (1, 3)
AND SAU.container_id = SP.hobt_id)
OR (SAU.type = 2
AND SAU.container_id = SP.partition_id)
WHERE S.name = 'schema'
--AND SO.name IN ('TableName')
GROUP BY GROUPING SETS(
(S.name,
SO.name,
SIT.internal_type_desc),
(S.name, SO.name), (S.name),())
ORDER BY S.name,
SO.name,
SIT.internal_type_desc;
Điều này thường sẽ cung cấp cho số cao hơn sys.fulltext_index_fragments
, nhưng khi kết hợp với sys.partitions
của bảng, nó sẽ thêm đến các số được trả lại từ EXEC sys.sp_spaceused @objname = N'schema.TableName';
.
Thử nghiệm với SQL Server 2016, nhưng tài liệu nói rằng họ nên có mặt từ năm 2008.
Có lẽ điều này có thể có ích: http://technet.microsoft.com/en-us/library/ms190370.aspx (IndexSize tài sản) –
* IndexSize * thực sự trả về kích thước của Danh mục FTS và một danh mục có thể có nhiều chỉ mục. Tôi muốn kích thước của từng chỉ mục riêng lẻ. – Poli