Movemos um banco de dados SQL Server para uma máquina virtual no Azure.
Como o banco de dados contém apenas dados históricos e não possui mais transações, queremos desligar e ligar a VM em uma programação para reduzir custos.
Até onde eu sei, a corrupção do banco de dados pode acontecer se a máquina reiniciar no meio de uma transação, então tenho três perguntas sobre isso:
A corrupção do banco de dados pode ocorrer em um banco de dados que não possui mais transações quando a máquina é desligada?
Existe uma maneira correta de desligar a máquina e evitar um cenário de corrupção?
Devemos deixar esta máquina funcionando 7 x 24?
Não. A corrupção do banco de dados é causada apenas por falhas no sistema de armazenamento ou bugs. O SQL Server executará a recuperação de falhas na inicialização para recuperar quaisquer bancos de dados que tenham registros de log de transações não aplicados ou que tenham sido alterados por transações que não foram confirmadas.
Este é um procedimento muito bem testado e executado em milhares de bancos de dados de produção todos os dias.
Ter um backup normal do SQL Server é proteção suficiente neste cenário.
Existem algumas situações em que você pode ter problemas se matar a máquina:
Se o subsistema de disco não cumprir algumas regras (como ordenação de gravação). Há uma ferramenta chamada SQLIOSIM.EXE instalada com o SQL Server que você pode usar para testar essas coisas. Considerando que você está no Azure, ficaria surpreso se você tivesse algum problema nessa área. Mais informações neste whitepaper clássico: https://bobsql.com/sql-server-io-basics-chapter-1/#_Toc92876356
Se você desligar no meio de uma transação enorme, então você terá uma reversão massiva ocorrendo na inicialização e não houver espaço suficiente para o arquivo ldf crescer.