(Eu perguntei originalmente como uma pergunta regular, mas depois descobri o método correto - obrigado BrentO)
Não, nunca.
Eu me deparei com isso várias vezes agora no ServerFault e quero alcançar uma boa audiência com alguns bons conselhos. Se as pessoas desaprovam essa maneira de fazer as coisas, diminua o preço e eu removerei isso com prazer.
A redução automática é uma configuração de banco de dados muito comum para ativada. Parece uma boa ideia - remova o espaço extra do banco de dados. Há muitos 'DBAs involuntários' por aí (pense em TFS, SharePoint, BizTalk ou apenas SQL Server antigo) que podem não saber que a redução automática é positiva.
Enquanto estava na Microsoft, eu costumava ter o Mecanismo de Armazenamento do SQL Server e tentei remover o recurso de redução automática, mas ele precisou ficar por compatibilidade com versões anteriores.
Por que o encolhimento automático é tão ruim?
O banco de dados provavelmente crescerá novamente, então por que diminuí-lo?
- Diminuir o crescimento e diminuir o tamanho gera fragmentação no nível do sistema de arquivos e consome muitos recursos.
- Você não pode controlar quando começa (mesmo que seja normal)
- Ele usa muitos recursos. A movimentação de páginas no banco de dados requer CPU, muito IO e gera muito log de transações.
- Aqui está o kicker real: o tamanho do arquivo de dados (auto ou não) causa uma fragmentação massiva do índice, o que leva a um desempenho ruim.
Eu fiz um post no blog há um tempo atrás que tem um exemplo de script SQL que mostra os problemas que ele causa e explica com mais detalhes. Consulte Auto-shrink - desligue-o! (sem publicidade ou lixo como esse no meu blog). Não fique confuso com a redução do arquivo de log, o que é útil e necessário na ocasião.
Então, façam um favor a si mesmos - olhem nas configurações do banco de dados e desliguem automaticamente. Você também não deve reduzir seus planos de manutenção exatamente pelo mesmo motivo. Espalhe a palavra para seus colegas.
Editar: devo acrescentar isso, lembrado pela segunda resposta - há um equívoco comum de que interromper uma operação de redução pode causar danos. Não, não vai. Eu costumava possuir o código de redução no SQL Server - ele reverte a movimentação da página atual que está sendo feita se interrompida.
Espero que isso ajude!