Edgard Leal

My personal blog hosted on Github using Jekyll

Home View on GitHub
16 November 2012
SQL Server

Como esta seu banco no SQL Server ?

Seja para detectar um problema de excesso de uso de disco ou mesmo para monitoração dinâmica do SQL Serve, é importante saber como cada tabela do banco esta se comportando e se estão crescendo como esperado. Uma outra situações pela qual costumo passar é quando preciso otimizar consultas e preciso saber a cardinalidade das tabelas envolvidas para decidir qual índices priorizar na junções condições e ordenamento. Para isso criei a rotina abaixo que lista todas as tabelas do banco de dados e sua respectiva cardinalidade ( Quantidade de registros ), este código pode ser incluso em uma Stored Procedure e utilizado para verificar periodicamente o comportamento dos dados no banco, isso pode evitar que sua aplicação pare de funcionar ou fique lenta de mais por causa de alguma rotina com erro.

declare cur cursor for 
  Select name from sysobjects where xtype = 'U' order by name;

declare @name varchar(60)
declare @qtd varchar(15)
declare @sql Nvarchar(4000)
create table #temp(Tabela varchar(60) ,total int)

open cur;
fetch cur into @name

while @@FETCH_STATUS = 0
begin
   print @name;
   set @sql = N'insert into #temp select ''' +
   @name + ''' as Tabela, count(*) as total from ' + @name
   exec( @sql)
   fetch cur into @name;
end

select * from #temp order by tabela
drop table #temp
close cur;
deallocate cur;

Para mais informações sobre Stored Procedures e sintaxe do SQL Server visite a documentação oficial da MicroSoft aqui.



blog comments powered by Disqus