1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

MS SQL - Distribuição de espaços

Discussão em 'Programação' iniciada por AwakE, 20 de Junho de 2007. (Respostas: 6; Visualizações: 717)

  1. AwakE

    AwakE Banido

    Isto não é bem uma dúvida de programação mas estou com um pequeno problema. Tenho uma base de dados em SQL Server que está a crescer para além do que é razoável e não percebo porquê.

    Existe alguma maneira facil de saber o tamanho das tabelas para perceber qual é que me está a lixar? É que são mais de 1000 tabelas, ver uma a uma é impossível.
     
  2. SpEeDyGoNzAlEs

    SpEeDyGoNzAlEs Power Member

    Qual a versão do SQL?

    Anyway, separar tabelas de uma base de dados para as colocar num sitio diferente... Não me cheira.

    O que podes fazer para "remediar" a solução é meter os data files numa drive, e os log files noutra. Isto para SQL2005, já não me lembro se podes ou não fazer o mesmo em 2000.

    Meti aqui o remediar entre "" porque o indicado é colocar estes dois ficheiros em drives físicas diferentes, mas isso é outra história :)

    Anyway, espero ter ajudado... Se não, tenta explicar um pouco mais o teu setup de máquina e SQL e afins.

    Quanto ao crescer para além do esperado é o corportamento "normal". Depende como tens configurado o transaction log da mesma.
    Para teres umas dicas de coisas que podes fazer, dá uma vista de olhos em http://sqlserver2000.databases.aspfaq.com/how-do-i-reclaim-space-in-sql-server.html
     
  3. AwakE

    AwakE Banido

    Eu não quero separar a base de dados, simplesmente quero saber quais as tabelas que estão a crescer demais, para a seguir ir tentar perceber a causa deste crescimento (fora do SQL).

    Vou ver as dicas do transaction log, tks.

    PS: Eu nem sequer sou administrador de bases de dados, mas o gajo que supostamente era responsável não faz nada....se não me safo sozinho estou tramado.
     
  4. SpEeDyGoNzAlEs

    SpEeDyGoNzAlEs Power Member

    Vou tentar arranjar-te um script que te consiga saber todas as tabelas, e qual o número de registo por tabela, duma forma ordenada.

    No entanto uma dada tabela ter um milhao de registos não quer dizer que ocupe mais que uma tabela com 10 registos... Depende muito do tipo de dados de cada registo.
     
  5. SpEeDyGoNzAlEs

    SpEeDyGoNzAlEs Power Member

    Tenta correr esta query, vai dar-te uma ideia do numero de registos por tabela...

    Não sei se ajuda, mas espero que sim.

    Código:
    use nome_base_dados
    
    create table #temp (tname nvarchar(256), trecords int)
    
    declare mycursor cursor fast_forward for
    select name
    from dbo.sysobjects
    where xtype = 'U' order by name
    
    declare @tablename sysname
    open mycursor
    
    fetch next from mycursor into @tablename
    
    while (@@fetch_status = 0)
    begin
    
    insert into #temp exec ('select ''' + @tablename + ''', count(*) from ' + @tablename)
    
    fetch next from mycursor into @tablename
    end
    close mycursor
    deallocate mycursor
    
    select * from #temp order by trecords desc
    
    drop table #temp
    
     
  6. SoundSurfer

    SoundSurfer Power Member

    Vê lá se é o LOG que está em FULL recover mode ... experimenta por "SIMPLE"
     
  7. AwakE

    AwakE Banido

    Já estive a ver o tamanho dos ficheiros e o LDF está pequeno. Não percebo muito disto mas acho que é o log né?

    O MDF é que tem 2 GB :(

    Obrigado pelo script, vou dar aos meus colegas para ver se eles descobrem alguma coisa com isso.
     

Partilhar esta Página