El siguiente script me ayudo a obtener dicha información. Lo he probado con éxito en las versiones de SQL Server 2000, 2005 y 2008.
La clave del script reside en el procedimiento almacenado sp_spaceused
sp_spaceused [[ @objname = ] 'objname' ]
[,[ @updateusage = ] 'updateusage' ]
set nocount on
create table #ts (name varchar(128), rows char(11), reserved varchar(18), data varchar(18), index_size varchar (18), unused varchar (18))
declare @name nvarchar(250)
declare @command nvarchar(250)
declare ts cursor fast_forward for
select name from sysobjects where xtype = 'u' order by name
open ts
fetch next from ts into @name
while @@fetch_status = 0
begin
select @command = 'execute sp_spaceused ''' + @name + ''''
insert into #ts exec(@command)
fetch next from ts into @name
end
close ts
deallocate ts
select * from #ts
order by convert (int, substring(data,1,patindex('% KB%', data))) desc
-- order by convert(int, rows) desc
drop table #ts
set nocount off
La información que obtenemos al ejecutar el script:
name
Nombre del objeto del que se solicitó la información de utilización de espacio.
rows
Número de filas de la tabla. Si el objeto especificado es una cola de Service Broker, esta columna indica el número de mensajes de la misma.
reserved
Espacio total reservado para objname.
data
Cantidad total de espacio utilizado por los datos en objname.
index_size
Cantidad total de espacio utilizado por los índices en objname.
unused
Espacio total reservado para objname, pero no utilizado todavía.
Para obtener el tamaño de la base de datos.
sp_spaceused @updateusage = N'true';
Para obtener el tamaño del log de transacciones
dbcc sqlperf(logspace)
Permisos
El permiso para ejecutar sp_spaceused se otorga a la función public. Sólo los miembros de la función fija de base de datos db_owner pueden especificar el parámetro @updateusage.
utilizando_sp_spaceused.zip
No hay comentarios.:
Publicar un comentario