Sim. Você deve ser capaz de reconstruir qualquer parte do seu sistema a partir do controle de origem, incluindo o banco de dados (e eu também diria certos dados estáticos).
Supondo que você não quer ter uma ferramenta para fazer isso, sugiro que você queira incluir o seguinte:
- Scripts de criação para estruturas de tabelas básicas, incluindo esquemas, usuários, tabelas, chaves, padrões e assim por diante.
- Atualizar scripts (alterando a estrutura da tabela ou migrando dados de um esquema anterior para o novo esquema)
- Scripts de criação para procedimentos armazenados, índices, visualizações, gatilhos (você não precisa se preocupar com a atualização para estes, já que sobrescreveu o que estava lá com o script de criação correto)
- Scripts de criação de dados para obter o sistema em execução (um único usuário, qualquer dado da lista de opções estática, esse tipo de coisa)
Todos os scripts devem incluir as instruções de descarte apropriadas e ser gravados para que possam ser executados como qualquer usuário (incluindo os prefixos de esquema / proprietário associados, se relevante).
O processo de atualização / marcação / ramificação deve ser exatamente igual ao restante do código-fonte - não há sentido em fazê-lo se você não puder associar uma versão do banco de dados a uma versão do aplicativo.
Aliás, quando você diz que as pessoas podem apenas atualizar o servidor de teste, espero que você queira dizer o servidor de desenvolvimento. Se os desenvolvedores estão atualizando o servidor de teste em tempo real, você está olhando para um mundo de dor quando se trata de descobrir o que você precisa liberar.