E quando o SHRINK não funciona?

10/02/2006

0

Colegas, boa tarde.

Preciso de ajuda para diminuir o tamanho de um banco de dados, que está com quase 5,7 Gb de espaço reservado e não utilizado. Será que alguém pode me ajudar? Já utilizei o o Shrink Database, mas não resolveu.

Sobre o BD, o sp_spaceused informa:
Size....................: 6,829,81 mb
Unallocated Space: 108.46 MB
Reserved.............: 6,780,264 KB
Data....................: 983,016 KB
Index Size...........: 90,880 KB
Unused................: 5,706,368 KB

Como exemplo de uma das tabelas do BD:
Quantidade Linhas: 112.198
Espaço Reservado: 1.932,680 Mb
Espaço de Dados..: 225,544 Mb
Espaço de índice...: 21,600 Mb
Espaço Livre.........: 1.685,536 Mb

Como podem perceber, há uma grande quantidade de espaço reservado e não utilizado. Executando o SHRINK, não consigo liberar este espaço. Já efetuei diversas verificações no banco, mas nada resolveu, entre elas:
- Desligar e eliminar estatísticas
- Eliminar índices com chave duplicada
- Checar integridade do BD
- Atualizar as informações dos índices (dbcc updateusage)
- Ativar o autoshrink do BD
- Rodar dbcc shrinkdatabase via Query Analyser
- Rodar dbcc shrinkfile via Query Analyser
- Rodar o Shrink via Enterprise Manager

Depois de todos esses procedimentos, o banco de dados não liberou nada deste espaço reservado. Fiz um teste, copiando as tabelas e índices de um BD para outro, e no novo BD o tamanho final do arquivo ficou em 1Gb. Porém, essa saída é apenas um peleativo. O que eu realmente gostaria de saber é como esse espaço todo ficou reservado e como fazer para liberá-lo. Será que alguém pode me ajudar?

Obrigada,

Ignez


Ignez_mt

Ignez_mt

Responder

Posts

15/02/2006

Aroldo Zanela

Colega,

Faça um backup e aplique o Shrink.


Responder

15/02/2006

Ignez_mt

Colega, bom dia.

Já fiz este teste anteriormente: backup e depois o shrink. Também não funcionou. Inclusive, teste configurar o BD com os diferentes tipos de recovery (simple, bulk-logged e full), fazer o backup e o shrink, e mesmo assim o BD não diminuiu de tamanho.

O único jeito de diminuir o arquivo foi recriar as tabelas para, finalmente, conseguir liberar o espaço reservado para elas. E em seguida rodar o Shrink. O problema é esse espaço reservado que eu não consigo liberar.

Obrigado,

Ignez


Responder

08/06/2007

Ignez_mt

Colegas, bom dia.

Consegui resolver o problema de diminuir o tamanho do banco de dados, e o caso não tinha nada a ver com o Shrink. O caso foi o seguinte. Tínhamos uma tabela de LOG de sistema no BD, e esta tabela não possuía chave primária. Por isso, havia uma entrada na tabela sysindexes, com IndId = 0 (zero), e espaço reservado (reserved) superior ao tamanho da tabela. Detalhe, eu não consigo excluir índices com IndID igual a 0, por isso não conseguia liberar o espaço reservado.

Quando eu criei uma PK nesta tabela (IndId = 1), o índice com IndID = 0 desapareceu, e o espaço reservado nesta tabela foi liberado. Assim, eu consegui diminuir o tamanho dos arquivos.

Por tratar-se de um BD com modelagem beeeem antiga, encontrei diversas tabelas na mesma situação. Então, criei uma PK identity em cada uma delas, apagando os respectivos índices com IndId = 0. No final das contas, diminui o tamanho do BD para menos da metade que tinha no início.

Obrigada,


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar