Há momentos em que você deve corrigir dados no Prod que não existem em outros servidores. Não se trata apenas de bugs, mas de uma importação de dados de um arquivo enviado por um cliente incorreto ou de um problema causado por alguém invadindo seu sistema. Ou de um problema causado por entrada incorreta de dados. Se o seu banco de dados for grande ou crítico, talvez você não tenha tempo para restaurar o backup mais recente e corrigir o dev.
Sua primeira defesa (e algo que nenhum banco de dados corporativo pode ficar sem!) São as tabelas de auditoria. Você pode usá-los para recuperar alterações de dados incorretas. Além disso, você pode escrever scripts para retornar dados ao estado anterior e testá-los em outros servidores muito antes de precisar reverter os dados auditados. O único risco é que você identificou os registros corretos para reverter.
Em seguida, todos os scripts para alterar dados em produção devem incluir o seguinte:
Eles devem estar em transações explícitas e ter um bloco TRY Catch.
Eles devem ter um modo de teste que você pode usar para reverter as alterações depois de ver o que elas teriam sido. Você deve ter uma declaração selecionada antes da alteração e uma execução após a alteração para garantir que a alteração esteja correta. O script deve garantir que o número de linhas processadas seja mostrado. Temos algumas dessas opções pré-configuradas em um modelo que garante que as peças sejam concluídas. Modelos para alterações, também ajudam a economizar tempo ao escrever a correção.
Se houver uma grande quantidade de dados para alterar ou atualizar, considere escrever o script para ser executado em lotes com confirmações para cada lote. Você não deseja bloquear todo o sistema enquanto conserta um milhão de registros. Se você tiver grandes montantes de dados para corrigir, verifique se um dba ou alguém acostumado a ajustar o desempenho revisa o script antes de executar e executar fora do horário comercial, se possível.
Em seguida, todos os scripts para alterar qualquer coisa na produção são revisados e colocados no controle de origem. Todos eles - sem exceção.
Finalmente, os desenvolvedores não devem executar esses scripts. Eles devem ser executados pelo dbas ou por um grupo de gerenciamento de configuração. Se você não tiver um desses, apenas as pessoas que são líderes em tecnologia ou superior devem ter o direito de executar as coisas no prod. Quanto menos pessoas executando coisas em prod, mais fácil é localizar um problema. Os scripts devem ser escritos para que sejam simplesmente executados, sem partes de destaque e executando uma etapa de cada vez. É o material de destaque que muitas vezes coloca as pessoas em problemas quando se esquecem de destacar a cláusula where.