Eu tenho um arquivo MDF que cresceu automaticamente de 1 MB para 40 GB em incrementos de 10%. O arquivo está muito fragmentado agora e quero desfragmentá-lo com o mínimo de tempo de inatividade.
Tenho um plano que não sei se vai funcionar:
- Normalmente, desfragmente a partição enquanto o serviço ainda está em execução até que os únicos arquivos fragmentados sejam os arquivos do banco de dados.
- Entre no modo de usuário único.
- Faça backup completo em uma partição diferente.
- Exclua o banco de dados com arquivo MDF fragmentado.
- Crie/restaure um novo banco de dados a partir do backup criado recentemente.
A eliminação do banco de dados e a restauração do backup removerão a fragmentação do arquivo?
Ou devo apenas desligar o serviço e executar a ferramenta de desfragmentação até terminar?
Há uma grande discussão sobre esse tópico aqui no ServerFault, na qual são discutidas as 3 formas de fragmentação. Sempre tenho que me lembrar de procurar a resposta antes de postar uma pergunta, pois isso me economiza muito tempo.
Resposta curta (tl/dr):
Ele removerá a fragmentação física, mas não a fragmentação lógica ou VLF no arquivo de log.
Fragmentação Física:
O backup e a restauração removerão qualquer fragmentação física . Ou seja, a fragmentação que ocorreu na partição NTFS como resultado do crescimento incremental do banco de dados ao longo do tempo e da indisponibilidade de espaço contíguo.
Outra Fragmentação:
Você ainda terá fragmentação de índice e fragmentação VLF no banco de dados. Paul Randall enfatizou não usar o Windows Defrag em seus SQLSkills Immersion Events e como isso pode levar à corrupção do banco de dados, então acho que você está no caminho certo.
Fundo:
A fragmentação física irá operar no disco onde os arquivos MDF/NDF/LDF ocupam. Como o SQL Server não rastreia essas informações, pois seriam inúteis. Queremos ser capazes de restaurar bancos de dados em qualquer disco rígido, desde que haja espaço, não estamos muito preocupados com a localização no disco, a menos que você esteja escrevendo rapidamente ... mas isso é uma exceção à regra .