Introdução
Tenho lido muitos artigos sobre exclusão de bancos de dados e os perigos de usar o comando shrink. No entanto, tenho a oportunidade de mover um banco de dados para um novo servidor com uma grande janela de inatividade, então quero redefinir o banco de dados e reduzir seu tamanho (para aumentar o desempenho e economizar custos em um ambiente hospedado).
Fundo
- O SQL Server existente é a Web Edition 2016.
- Nova edição Standard do SQL Server 2022.
- Tamanho do banco de dados ~120 GB.
- Algumas tabelas grandes compõem a maior parte disso, assim como os índices nessas tabelas grandes.
- Quero me concentrar apenas na redução do tamanho do banco de dados. Estou confortável com as outras partes da criação de um novo servidor.
Processo proposto
Antes da interrupção
- Execute procedimentos armazenados que usam
DELETE FROM
sintaxe. Eu os testei cuidadosamente. Eles agrupam as exclusões e serão executados ao longo de alguns dias. - Monitore os arquivos de log e o disco de log para verificar se há espaço suficiente.
- Garanta que o processamento de exclusão seja concluído antes de chegarmos à janela de interrupção.
Durante a interrupção
- Faça um backup completo do banco de dados e coloque-o em um local seguro.
- Elimine os maiores índices (há cerca de 3 ou 4 que eu vou focar).
- Coloque o banco de dados no modo de recuperação simples.
- Reduza os arquivos de log e de banco de dados o máximo possível.
- Faça backup do banco de dados.
- Copie o arquivo de backup para o novo servidor.
- Restaurar o banco de dados para os locais de arquivo corretos
- Aplique os índices que foram removidos.
- Reconstrua todos os índices.
- Atualizar estatísticas.
- Retorne o banco de dados ao modelo de recuperação completa.
- Testando e reiniciando aplicativos