Obtener el tamaño de todas las tablas en la base de datos
Heredé una base de datos SQL Server bastante grande. Parece ocupar más espacio del que esperaría, dados los datos que contiene.
¿Existe una manera sencilla de determinar cuánto espacio en el disco consume cada tabla?
SELECT
t.name AS TableName,
s.name AS SchemaName,
p.rows,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.object_id = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.name NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.object_id > 255
GROUP BY
t.name, s.name, p.rows
ORDER BY
TotalSpaceMB DESC, t.name
Si está utilizando SQL Server Management Studio (SSMS), en lugar de ejecutar una consulta ( que en mi caso devolvió filas duplicadas ), puede ejecutar un informe estándar .
- Haga clic derecho en la base de datos
- Vaya a Informes > Informes estándar > Uso de disco por tabla
Nota: El nivel de compatibilidad de la base de datos debe establecerse en 90 o superior para que esto funcione correctamente. Consulte http://msdn.microsoft.com/en-gb/library/bb510680.aspx
Nota: Este informe no está disponible cuando se trabaja con una base de datos SQL de Azure.
sp_spaceused puede brindarle información sobre el espacio en disco utilizado por una tabla, una vista indexada o toda la base de datos.
Por ejemplo:
USE MyDatabase; GO
EXEC sp_spaceused N'User.ContactInfo'; GO
Esto informa la información de uso del disco para la tabla ContactInfo.
Para usar esto para todas las tablas a la vez:
USE MyDatabase; GO
sp_msforeachtable 'EXEC sp_spaceused [?]' GO
También puede obtener el uso del disco desde la funcionalidad de Informes estándar del botón derecho del ratón de SQL Server. Para acceder a este informe, navegue desde el objeto del servidor en el Explorador de objetos, baje al objeto Bases de datos y luego haga clic con el botón derecho en cualquier base de datos. En el menú que aparece, seleccione Informes, luego Informes estándar y luego "Uso de disco por partición: [Nombre de la base de datos]".