Pergunta

Eu estou trabalhando em algumas alterações de esquema para um banco de dados existente.

I feito o backup do banco de dados para obter uma cópia dev, e fizeram as minhas alterações. I será a criação de um único script rolo para migrar as alterações na máquina de produção em uma única transação.

Existe uma prática recomendada para criar um script de reversão encerrar uma questão implantação surge? Antes que eu escrevi, em seguida, à mão usando o seguinte padrão:

  • Gota novas restrições e índices
  • tabelas Alter para remover novas colunas
  • Gota acrescentou tabelas
  • Commit transação

Existe uma abordagem melhor?

Foi útil?

Solução

É basicamente isso, eu não acho que há muito a acrescentar, além do que a sua abordagem. Isto é como nós o fazemos em nossa empresa, os desenvolvedores são responsáveis ??por criar o script e o script de reversão, e nós somos responsáveis ??por deixar o DB no mesmo estado em que estava antes das alterações iniciais são aplicadas. Em seguida, os DBAs executá-lo na produção, se há sempre um problema que vai executar o script de reversão e tudo voltou ao normal. Basta ter em mente as dependências e a ordem em que você alterar seus objetos e, em seguida, criar as para trás de script de reversão.

Outras dicas

Está faltando a quinta etapa

  • Gota novas restrições e índices
  • tabelas Alter para remover novas colunas
  • Gota acrescentou tabelas
  • Commit transação
  • Teste o inferno fora do script antes de executá-lo em produção

Uma abordagem mais eficiente é registrar as mudanças como eles acontecem como RoR < a href = "http://wiki.rubyonrails.org/rails/pages/UsingMigrations" rel = "nofollow noreferrer"> migrações fazer . Para cada alteração DB você cria um script que irá aplicar-se tanto a mudança and roll-lo de volta (à sua escolha, é claro). Você pode então ter os scripts sob controle de versão, assim como o seu código.

Além disso, se você manter um número de versão no banco de dados você pode automatizar um pouco mais, através da identificação de cada script com um número de versão e ter que aumentar ou diminuir o número de versão no banco de dados de acordo com a ação executada.

Se é um relativamente pequeno banco de dados apenas fazer um backup antes de aplicar a atualização. Se tudo dá errado você faz uma restauração.

Uma vez que vai dados ao vivo e novas é introduzido você realmente não pode revertê-lo de qualquer maneira. Você apenas tem que corrigir os problemas.

Se você usar uma ferramenta como o SQL do Redgate comparar, você pode executar o comparar entre as duas bases de dados em ambos os sentidos e usar tanto para criar os scripts que você precisa. o dev de roteiro prod teria as mudanças que você está fazendo e o prd script dev iria retornar ao estado de banco de dados de produção original. Isso garante que você não esquecer de nada em qualquer roteiro bem.

Com o SQL Server 2005 ou mais recente, você também pode criar um instantâneo de banco de dados, que lhe permite voltar a esse estado a qualquer momento. Veja esta página para mais informações:

http://msdn.microsoft.com/en-us/library /ms175158.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top