查询Sql Server数据库所有表及其数据总条数和占用空间

作者:da吃一鲸8862024.01.22 13:16浏览量:9

简介:本文将介绍如何使用SQL查询语句来获取Sql Server数据库中所有表的数据总条数和表占用的空间大小。

要查询Sql Server数据库中所有表的数据总条数和表占用的空间大小,可以使用以下SQL查询语句:

  1. SELECT
  2. t.NAME AS TableName,
  3. p.rows AS RowCounts,
  4. SUM(a.total_pages) * 8 AS TotalSpaceKB,
  5. CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS FLOAT) AS TotalSpaceMB,
  6. SUM(a.used_pages) * 8 AS UsedSpaceKB,
  7. CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS FLOAT) AS UsedSpaceMB,
  8. (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
  9. CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS FLOAT) AS UnusedSpaceMB
  10. FROM
  11. sys.tables t
  12. INNER JOIN
  13. sys.indexes i ON t.OBJECT_ID = i.object_id
  14. INNER JOIN
  15. sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
  16. INNER JOIN
  17. sys.allocation_units a ON p.partition_id = a.container_id
  18. WHERE
  19. t.NAME NOT LIKE 'dt%'
  20. AND t.is_ms_shipped = 0
  21. GROUP BY
  22. t.Name, p.Rows

这个查询语句将返回每个表的名称、数据总条数、总空间大小(KB和MB)、已使用空间大小(KB和MB)和未使用空间大小(KB和MB)。
请注意,这个查询语句假设数据库中没有不包含在任何索引中的行。如果有这样的行,它们将不会出现在结果中。
此外,WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 这部分的过滤条件用于排除系统表和临时表。如果你希望包括这些表,可以删除或修改这些条件。
另外,这个查询语句返回的结果是按照表的名称进行排序的。如果你希望按照其他方式排序,可以在查询语句中添加相应的排序条件。
最后,请注意这个查询语句使用了聚合函数来计算每个表的总空间、已使用空间和未使用空间大小。如果你需要更详细的每个分区或分配单位的空间信息,可能需要使用更复杂的查询语句。
以上就是如何使用SQL查询语句来获取Sql Server数据库中所有表的数据总条数和表占用的空间大小。希望对你有所帮助。