Primeiro, gostaria de pedir desculpas se meu conhecimento na área de DBA é muito limitado, já que eu e vários outros membros da equipe acabamos de receber este projeto porque temos recursos significativamente limitados.
A tarefa dada foi atualizar várias instâncias do SQL Server de 2014 para 2017 e algumas para 2022, uma vez que o EOS está iminente no próximo ano. O escopo também combinará vários bancos de dados em uma instância. Elaboramos um plano sobre como executá-lo, mas precisamos de alguma validação de que esta etapa está correta e de alguns conselhos e sugestões para a implantação.
Pré-atualização
- Backups Primeiro faríamos backup de todos os bancos de dados que iremos atualizar para o formato .bak. Também salvaremos instantâneos caso o .bak falhe.
- Testando os referidos backups Após a conclusão do backup, criaremos uma VM para restaurar os backups para garantir que o .bak ou os snapshots possam ser usados em caso de problema durante a atualização (esta etapa é obrigatória, pois o cliente está cauteloso porque instantâneos anteriores falharam)
- Geraremos um relatório do Data Migration Assistant (DMA) para descobrir quais SP e funções não são compatíveis após a atualização.
- Tudo isso será feito primeiro em um estágio de desenvolvimento; se tudo tiver sucesso, prosseguiremos na produção.
Atualizar
- Corrigiremos os referidos SP e funções do relatório DMA que terão problemas após a atualização
- Crie um período de inatividade que também coordenaremos com a equipe de operações para interromper todos os trabalhos de e para os bancos de dados (como Talend e Microstrategy e assim por diante).
Pós-atualização
- Certifique-se de que nenhum SP e Funções estejam obsoletos
- Verifique os dados e a acessibilidade
- Verifique todos os aplicativos que estão usando o banco de dados.
- Documente todas as alterações feitas em SP e Funções
Possível método alternativo a ser usado
- No produto, crie outra instância e atualize-a. Se for bem-sucedido, todos os aplicativos serão redirecionados para a nova instância e desabilitarão a instância antiga.
Limitações
- Os dados no desenvolvimento são significativamente menores, não há recurso para replicar
- Criar uma VM/servidor com as mesmas especificações do prod para testar ou tentar fazer isso pode ser difícil devido à restrição de recursos
Então este é o plano de jogo atual, há alguma sugestão ou conselho? Há algo que perdemos? Há algo que devemos observar? Existe uma maneira melhor de fazer isso?
Temos uma experiência muito limitada em lidar com este tipo de tarefa, por isso estamos realmente preocupados com a possibilidade de as coisas correrem mal. É claro que testaremos isso de antemão, mesmo antes de atualizar o desenvolvedor, para garantir que tudo esteja tão tranquilo quanto possível.
Muito obrigado.
Apoiei a sugestão de Peter sobre Query Store . Eu até o ativaria agora, antes da atualização, e salvaria esses dados, das instâncias atuais, quando possível (em instâncias aplicáveis que executam o SQL Server 2016 ou mais recente, se houver).
O maior problema que você provavelmente encontrará é a regressão de desempenho com algumas consultas. Isso é comum durante a atualização e vocês também estão alterando a configuração do servidor/mesclando vários bancos de dados em uma única instância. E você está pulando várias versões, especialmente as instâncias que estão sendo atualizadas para 2022, onde houve uma magnitude de mudanças (mesmo em 2019) desde 2014. Há muita coisa acontecendo ao mesmo tempo, que alguma regressão de desempenho é inevitável.
E você não poderá testar com garantia em seus ambientes de desenvolvimento, principalmente porque os dados não são os mesmos. A quantidade e as qualidades estatísticas dos dados afetam diretamente os planos de consulta que estão sendo gerados.
Por fim, recomendo que você atualize todas as instâncias para a mesma versão, de 2019 ou 2022 (2022 ainda é relativamente novo e potencialmente sujeito a bugs). Por um lado, será mais fácil gerenciar todos eles em relação aos novos recursos, quando todos estiverem consistentes em versão. Mas também porque 2017 já encerrou o suporte convencional e você não quer passar pelo processo de atualização novamente daqui a alguns anos, se não for necessário.
Desculpe se esta resposta parece deprimente, mas é a realidade de como acontecem as atualizações.
Sua melhor aposta é imitar o seguinte o mais próximo possível:
Não espero que você consiga seguir isso perfeitamente, mas o mais próximo possível o deixará mais perto da maneira ideal de atualizar.