tamaño - ¿Cómo puede saber qué tablas ocupan más espacio en una base de datos de SQL Server 2005?
tamaño maximo base de datos sql server 2014 express (3)
¿Cómo puede saber qué tablas ocupan más espacio en una base de datos de SQL Server 2005?
Estoy seguro de que hay algún procedimiento almacenado en el sistema que muestra esta información.
Tengo una base de datos TEST que creció de 1 tb a 23 tb. Actualmente estamos realizando muchas pruebas de conversión de clientes en la base de datos, lo que implica ejecutar el mismo procedimiento almacenado de conversión varias veces. Lo hace BORRAR que estoy seguro está aumentando el registro de transacciones. Pero esto me hizo pensar para hacer esta pregunta.
Gracias por adelantado.
El comentario de Rossisdead respondió a esta pregunta lo mejor para mí, me gustaría que no estuviera enterrado en un comentario. Esto será útil para personas como yo que no intentan crear un script de la solución (el OP no solicitó un fragmento de código)
Si está utilizando Management Studio, también puede hacer clic con el botón derecho en la base de datos e ir a Informes -> Uso de disco por tabla para obtener los mismos resultados.
Pruebe esta secuencia de comandos: enumerará el número de filas y el espacio utilizado por las filas de datos (y el espacio total utilizado) para todas las tablas de su base de datos:
SELECT
t.NAME AS TableName,
i.name AS indexName,
SUM(p.rows) AS RowCounts,
SUM(a.total_pages) AS TotalPages,
SUM(a.used_pages) AS UsedPages,
SUM(a.data_pages) AS DataPages,
(SUM(a.total_pages) * 8) / 1024 AS TotalSpaceMB,
(SUM(a.used_pages) * 8) / 1024 AS UsedSpaceMB,
(SUM(a.data_pages) * 8) / 1024 AS DataSpaceMB
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
WHERE
t.NAME NOT LIKE ''dt%'' AND
i.OBJECT_ID > 255 AND
i.index_id <= 1
GROUP BY
t.NAME, i.object_id, i.index_id, i.name
ORDER BY
OBJECT_NAME(i.object_id)
Usa sp_spacedUsed
Exec sp_spaceused N''YourTableName''
O si desea ejecutar el sp_spaceused
para cada tabla en su base de datos, entonces puede usar este SQL:
set nocount on
create table #spaceused (
name nvarchar(120),
rows char(11),
reserved varchar(18),
data varchar(18),
index_size varchar(18),
unused varchar(18)
)
declare Tables cursor for
select name
from sysobjects where type=''U''
order by name asc
OPEN Tables
DECLARE @table varchar(128)
FETCH NEXT FROM Tables INTO @table
WHILE @@FETCH_STATUS = 0
BEGIN
insert into #spaceused exec sp_spaceused @table
FETCH NEXT FROM Tables INTO @table
END
CLOSE Tables
DEALLOCATE Tables
select * from #spaceused
drop table #spaceused
exec sp_spaceused
El SQL anterior es de here