none
Como liberando espaço em disco após exclusão de registros... RRS feed

  • Pergunta

  • Prezados,

     

    Tenho um BD, através da exclusão de registros de algumas dessas tabelas desse Banco, o SQL Server automaticamente vai liberar espaço em disco ou teria que haver uma intervenção manual?Se sim, para intervenção,  como deveria proceder para liberar o espaço em disco para o SO após exclusao de Tabelas e registros?

     

    Grato pela atenção,

     

     

    • Movido Gustavo Maia Aguiar quinta-feira, 13 de agosto de 2009 02:07 (De:SQL Server - Desenvolvimento Geral)
    sexta-feira, 8 de junho de 2007 19:00

Respostas

  •  

    Olá Adriano,

     

    O SQL fará apenas a liberação lógica, ou seja, o espaço dentro do arquivo estará disponível para a gravação de mais dados.

     

    Para liberar o espaço para o SO, use um destes comandos: DBCC SHRINKFILE ou DBCC SHRINKDATABASE.

     

    Veja no Books On Line (help do SQL) como realizar o procedimento. Caso restar dúvida, retorne.

     

    Abraço

    sexta-feira, 8 de junho de 2007 19:10
  • Adriano,

     

    Mesmo fazendo a exclusão dos registros, fisicamente o tamanho do seu arquivo de dados não irá diminuir, é necessário sim realizar alguns procedimentos manuais para diminuir ou comprimir o tamanho tando do arquivo de dados, como também do arquivo de log.

     

    Para diminuir o tamanho do seu banco de dados lógicamente no SQL Server utilize: DBCC ShrinkDatabase.

     

    Para diminuir o tamanho do arquivo de banco de dados ou de log, e liberar espaço fisico utilize: DBCC ShrinkFile.

     

    Veja os exemplos:

     

    DBCC SHRINKFILE (DataFile1, 7);

     

    DBCC SHRINKDATABASE (UserDB, 10);

     

    Para maiores informações acesse o Books On-Line do SQL Server.

    sexta-feira, 8 de junho de 2007 20:14
    Moderador

Todas as Respostas

  •  

    Olá Adriano,

     

    O SQL fará apenas a liberação lógica, ou seja, o espaço dentro do arquivo estará disponível para a gravação de mais dados.

     

    Para liberar o espaço para o SO, use um destes comandos: DBCC SHRINKFILE ou DBCC SHRINKDATABASE.

     

    Veja no Books On Line (help do SQL) como realizar o procedimento. Caso restar dúvida, retorne.

     

    Abraço

    sexta-feira, 8 de junho de 2007 19:10
  • Adriano,

     

    Mesmo fazendo a exclusão dos registros, fisicamente o tamanho do seu arquivo de dados não irá diminuir, é necessário sim realizar alguns procedimentos manuais para diminuir ou comprimir o tamanho tando do arquivo de dados, como também do arquivo de log.

     

    Para diminuir o tamanho do seu banco de dados lógicamente no SQL Server utilize: DBCC ShrinkDatabase.

     

    Para diminuir o tamanho do arquivo de banco de dados ou de log, e liberar espaço fisico utilize: DBCC ShrinkFile.

     

    Veja os exemplos:

     

    DBCC SHRINKFILE (DataFile1, 7);

     

    DBCC SHRINKDATABASE (UserDB, 10);

     

    Para maiores informações acesse o Books On-Line do SQL Server.

    sexta-feira, 8 de junho de 2007 20:14
    Moderador
  • Adriano,

     

    Concordo plenamente com os posts dos colegas. Porém, avalie corretamente o uso do Shrink, pois não é recomendado que esse procedimento seja feito muito frequentemente, você pode perder performance....

     

    sábado, 9 de junho de 2007 12:23
  • Qual seria a melhor forma entao para diminuir...

    Porque o banco de dados sempre cresce...

    Valeu

    Anderson

    quarta-feira, 12 de agosto de 2009 21:02
  • Oi Anderson,

    como o Roberto bem lembrou, você deve tomar cuidado com o SHRINKDATABASE porque ele vai fragmentar os seus indíces e seus arquivos, o que pode levar a uma perda de performance... 
    se você não está precisando do espaço em disco no windows, então o ideal é deixar que o SQL server gerencie isso.... quando você deleta registros, o arquivo pode não diminuir, mas o espaço em disco não está perdido... ele está alocado para o arquivo mdf/ndf/ldf, mas está vazio... ou seja... quando você inserir um registro novo, o SQL Server vai ver que existe espaço disponível no arquivo e vai preencher aquele arquivo, sem precisar solicitar para o SO alocar mais espaço físico em disco... se o seu arquivo sempre cresce é porque realmente o banco está precisando daquele espaço em disco naquele momento para inserir novos dados.

    agora se você realmente precisa utilizar o espaço em disco e vai usar o SHRINK... então é aconselhável apenas que você faça isso em momentos de pouco uso, porque ele vai utilizar muitos recursos do seu servidor.. e após você rodar o shrink.. é bom rodar o quanto antes uma reorganização dos seus indíces.. 

    segue um artigo bem interessante (mas em ingles =/) que explica isso e o porque isso ocorre... no exemplo dele a gente saí de um indíce quase perfeito, com fragmentação de 0.39% para uma fragmentação de 99%, por causa de um SHRINK na base de dados.. 



    abraço, 

    Felipe Ferreira
    http://weblogs.asp.net/felipeferreira
    MCT, MCITP, MCPD, 5X MCTS
    quarta-feira, 12 de agosto de 2009 21:56