sexta-feira, 26 de novembro de 2010

Listando todas as tabelas, total de registros e espaço utilizado

Esta semana iniciei alguns testes com o CTP do Denali, e para impor algum rigor nos testes de desempenho comecei a buscar as maiores tabelas (em número de registros e em espaço físico). Localizei na internet, uma procedure que faz exatamente isso implementando um Loop em todas as tabelas do banco de dados que é passado como parâmetro e executando a procedure SP_spaceused. Segue o script da proc, com uma pequena alteração minha:

 

Create procedure s_SpaceUsed

      @SourceDB   varchar(128)

as

 

set nocount on

 

declare @sql varchar(128)

 

      create table #tables(name varchar(128))

     

      select @sql = 'insert #tables select TABLE_NAME from '

  + @SourceDB + '.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = ''BASE TABLE'''

      exec (@sql)

     

      create table #SpaceUsed (name varchar(128),

rows varchar(11),

reserved varchar(18),

data varchar(18),

index_size varchar(18),

unused varchar(18))

 

      declare @name varchar(128)

      select @name = ''

 

      while exists (select * from #tables where name > @name)

      begin

 

            select @name = min(name) from #tables where name > @name

            select @sql = 'exec ' + @SourceDB + '..sp_executesql N''insert #SpaceUsed exec sp_spaceused ' + @name + ''''

            exec (@sql)

 

      end

 

      select * from #SpaceUsed

      order by cast(rows desc

 

      drop table #tables

      drop table #SpaceUsed

go

 

 

Link para o site original e para o script original.

 

Até a próxima!

Nenhum comentário:

Postar um comentário

Leave your comment here!