una tamaño tablas tabla sp_spaceused saber peso ocupa maximo las datos cuanto como calcular cada sql-server sql-server-2005

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