Tamaño de las tablas en una base de datos

02/03/2005 - 00:04 por Francisco Flamenco | Informe spam
Alguien cuenta con una consulta para conocer el tamaño de las tablas de una
base de datos (no el sp_spaceused, sino una consulta de las tablas y su
tamaño).

De antemano muchas gracias por su atención.

Preguntas similare

Leer las respuestas

#1 MAXI
02/03/2005 - 00:15 | Informe spam
Hola, porque no te es util el sp?



Maxi
Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:



"Francisco Flamenco" escribió en el mensaje
news:
Alguien cuenta con una consulta para conocer el tamaño de las tablas de
una base de datos (no el sp_spaceused, sino una consulta de las tablas y
su tamaño).

De antemano muchas gracias por su atención.



Respuesta Responder a este mensaje
#2 Francisco Flamenco
02/03/2005 - 00:29 | Informe spam
Necesito revisar el tamaño de 120 tablas y poder hacer ordenamiento del
listado


"MAXI" escribió en el mensaje
news:
Hola, porque no te es util el sp?



Maxi
Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)

MSN:



"Francisco Flamenco" escribió en el mensaje
news:
Alguien cuenta con una consulta para conocer el tamaño de las tablas de
una base de datos (no el sp_spaceused, sino una consulta de las tablas y
su tamaño).

De antemano muchas gracias por su atención.







Respuesta Responder a este mensaje
#3 Francisco Flamenco
02/03/2005 - 01:37 | Informe spam
Es exactamente lo que buscaba.

Muchas gracias!!

"Juan Carlos Leguizamón" escribió
en el mensaje news:%

Quiza esta consulta de mi amigo Javier Loria te sirva:

select sysobjects.name
, sum(case when sysindexes.indid<2 then rows
else 0 end) as rows
, sum(case when sysindexes.indid in (0,1,255) then sysindexes.reserved
else 0 end) * 8 as reserved
, sum(case when sysindexes.indid in (0,1) then sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end) * 8 as Data
, (sum(case when sysindexes.indid in (0,1,255) then sysindexes.used
else 0 end)
- sum(case when sysindexes.indid in (0,1) then sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end))*8 as index_size
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved-sysindexes.used
else 0 end)*8) as unused
from sysobjects
join sysindexes
on sysobjects.id=sysindexes.id
where xtype='U'
group by sysobjects.name
order by 2 desc

Saludos,

Juan Carlos Leguizamón.


"Francisco Flamenco" escribió en el mensaje
news:
Alguien cuenta con una consulta para conocer el tamaño de las tablas de


una
base de datos (no el sp_spaceused, sino una consulta de las tablas y su
tamaño).

De antemano muchas gracias por su atención.







Respuesta Responder a este mensaje
#4 Juan Carlos Leguizamón
02/03/2005 - 02:29 | Informe spam
Quiza esta consulta de mi amigo Javier Loria te sirva:

select sysobjects.name
, sum(case when sysindexes.indid<2 then rows
else 0 end) as rows
, sum(case when sysindexes.indid in (0,1,255) then sysindexes.reserved
else 0 end) * 8 as reserved
, sum(case when sysindexes.indid in (0,1) then sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end) * 8 as Data
, (sum(case when sysindexes.indid in (0,1,255) then sysindexes.used
else 0 end)
- sum(case when sysindexes.indid in (0,1) then sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end))*8 as index_size
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved-sysindexes.used
else 0 end)*8) as unused
from sysobjects
join sysindexes
on sysobjects.id=sysindexes.id
where xtype='U'
group by sysobjects.name
order by 2 desc

Saludos,

Juan Carlos Leguizamón.


"Francisco Flamenco" escribió en el mensaje
news:
Alguien cuenta con una consulta para conocer el tamaño de las tablas de


una
base de datos (no el sp_spaceused, sino una consulta de las tablas y su
tamaño).

De antemano muchas gracias por su atención.



Respuesta Responder a este mensaje
#5 Alejandro Mesa
02/03/2005 - 15:41 | Informe spam
Francisco,

Puedes crear una tabla temporal para almacenar el resultado del
procedimiento almacenado sp_spaceused. Este procedimineto lo ejecutarias por
cada tabla de la base de datos y para ello puedes usar el procedimiento no
documentado sp_msforeachtable (no lo recominedo) o crear un cursor para traer
el nombre de las tablas.

Ejemplo:

use northwind
go

create table #t (
table_name sysname,
rows_cnt int,
reserved varchar(25),
data varchar(25),
index_size varchar(25),
unused varchar(25)
)

insert into #t
execute sp_msforeachtable 'execute sp_spaceused [?]'

select
*
from
#t
order by
cast(left(reserved, charindex(' ', unused) - 1) as int) desc

truncate table #t

declare @tn sysname
declare tables_cursor cursor
local
fast_forward
for
select
table_name
from
information_schema.tables
where
table_type = 'base table'

open tables_cursor

while 1 = 1
begin
fetch next from tables_cursor into @tn

if @@error != 0 or @@fetch_status != 0 break

insert into #t
exec('execute sp_spaceused ''' + @tn + '''')
end

close tables_cursor
deallocate tables_cursor

select
*
from
#t
order by
cast(left(unused, charindex(' ', unused) - 1) as int) desc

drop table #t
go

No te recomiendo el acceso directo a las tablas de sistema o el uso de
formulas que son propietarias de Microsoft y las cuales pueden ser cambiadas
sin previo aviso (lo mismo con sp_msforeachtable).


AMB

"Francisco Flamenco" wrote:

Alguien cuenta con una consulta para conocer el tamaño de las tablas de una
base de datos (no el sp_spaceused, sino una consulta de las tablas y su
tamaño).

De antemano muchas gracias por su atención.




Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida