Como você controla as alterações do banco de dados no controle de origem?

Usamos o SQL Server 2000/2005 e o Vault ou SVN na maioria dos nossos projetos. Não encontrei uma solução decente para capturar alterações de esquema / proc do banco de dados em qualquer sistema de controle de origem.

Nossa solução atual é bastante complicada e difícil de aplicar (escreva o objeto que você altera e o confirme no banco de dados).

Temos muitas idéias de como resolver esse problema com algum desenvolvimento personalizado, mas prefiro instalar uma ferramenta existente (as ferramentas pagas são boas).

Então: como você controla as alterações no código do banco de dados? Você tem alguma ferramenta recomendada?

Editar:

Obrigado por todas as sugestões. Devido a restrições de tempo, prefiro não usar o meu aqui. E a maioria das sugestões tem a falha de exigir que o desenvolvedor siga algum procedimento.

Em vez disso, uma solução ideal monitoraria o banco de dados SQL em busca de alterações e confirmaria as alterações detectadas no SCM. Por exemplo, se o SQL Server tivesse um complemento que pudesse registrar qualquer alteração no DML com o usuário que fez a alteração e, em seguida, confirmar o script desse objeto no SCM, eu ficaria emocionado.

Conversamos internamente sobre dois sistemas: 1. No SQL 2005, use permissões de objeto para impedir que você altere um objeto até fazer um "checkout". Em seguida, o procedimento de check-in o registraria no SCM. 2. Execute um trabalho agendado para detectar quaisquer alterações e enviá-las (anonimamente) ao SCM.

Seria bom se eu pudesse pular a parte de ação do usuário e fazer com que o sistema lidasse com tudo isso automaticamente.

questionAnswers(13)

yourAnswerToTheQuestion