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!