Eu tenho apenas 2 GB restantes, por isso preciso remover esta tabela de histórico. Esta tabela agora está vazia, mas o espaço em disco do banco de dados não foi liberado. E o arquivo do banco de dados é de 320 GB.
sql-server
sql-server-2012
truncate
Lucas Rodrigues Sena
fonte
fonte
Respostas:
Se você estiver referenciando o consumo real do arquivo de banco de dados no volume, o SQL Server não tratará isso automaticamente . Só porque você removeu dados do banco de dados não significa que os arquivos do banco de dados serão reduzidos para caber apenas nos dados existentes.
O que você procuraria, se precisar recuperar espaço no volume, reduziria o arquivo específico
DBCC SHRINKFILE
. É importante destacar algumas práticas recomendadas, conforme a documentação:Também de nota:
Certamente, há algumas coisas a considerar ao fazer isso, e eu recomendo que você dê uma olhada na postagem de Paul Randal no que acontece quando você faz essa operação.
A primeira etapa seria definitivamente verificar quanto espaço e espaço livre você realmente pode substituir, bem como o espaço usado no (s) arquivo (s):
fonte
Esse é um comportamento normal quando você trunca a tabela e envolve a remoção de mais de 128 extensões conforme o Per Books Online
Você precisaria esperar e, é claro, reduziria manualmente o arquivo para recuperar espaço. Também vale mencionar que a redução causa fragmentação lógica e deve ser evitada, a menos que sua necessidade seja grave. Você precisaria, de certa forma, o equilíbrio entre encolher e fragmentar. É melhor se perguntar se o encolhimento realmente resolveria o problema, considerando o cenário em que os dados voltarão a crescer de qualquer maneira.
Use a consulta abaixo para verificar quanto espaço livre há no banco de dados
fonte
Além das respostas de Tom e Shanky, se o seu banco de dados contiver dados LOB / BLOB, o DBCC SHRINKFILE pode não funcionar. Se for esse o caso, você tem duas opções, dependendo de poder colocar o banco de dados offline ou não. Se você pode colocar o banco de dados offline, precisará copiar os dados e copiá-los novamente para remover o espaço vazio. Você pode fazer isso de uma das seguintes maneiras:
Se você não conseguir colocar o banco de dados offline, poderá usar o comando DBCC SHRINKFILE com a opção EMPTYFILE .
Detalhes para cópia offline: http://support.microsoft.com/kb/324432/en-us
Informações atuais sobre a opção EMPTYFILE http://msdn.microsoft.com/en-us/library/ms189493(v=sql.105).aspx
fonte