segunda-feira, 27 de abril de 2020

Não é possível restaurar um backup pequeno mesmo quando há espaço em disco

Se ao tentar restaurar um backup suficientemente pequeno para o espaço disponível em disco, mas que o SQL insiste em informar que não há espaço em disco, tente os comandos a seguir para reduzir os espaços alocados mas não utilizados do banco de dados e do arquivo de log. Em geral é o arquivo de Log que causa tais problemas, em especial nos bancos de muita transação. Por isso o exemplo abaixo vai encolher, ou shrink, o arquivo para o tamanho real (ou quase, já que podemos deixar uma margem reservada para ganho de desempenho ao precisar de novo espaço).

ALTER DATABASE <db_name>  SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE(<db_name>_log, 200);
GO
ALTER DATABASE <db_name> SET RECOVERY FULL;
GO

<db_name> = busque pelo nome lógico do banco nas propriedades > arquivos se o comando informar que não localizou o arquivo.

Também é possível fazer isso pela interface gráfica, mas o comando parece não funcionar, ou não executar imediatamente (deferred basis?). Na linha de comando sempre funcionou.

Para mais detalhes sobre o comando consulte a documentação.

Frases do erro: Restore of database failed. There is insufficient free space on disk.