Как вы отслеживаете изменения базы данных в системе контроля версий?

Мы используем SQL Server 2000/2005 и Vault или SVN в большинстве наших проектов. Я не нашел достойного решения для записи изменений схемы / процесса базы данных ни в одной из систем контроля версий.

Наше текущее решение довольно обременительно и трудно реализуемо (запишите сценарий, который вы изменяете, и зафиксируйте его в базе данных).

У нас есть много идей о том, как решить эту проблему с помощью некоторой пользовательской разработки, но я бы предпочел установить существующий инструмент (с платными инструментами все в порядке).

Итак: как вы отслеживаете изменения кода вашей базы данных? У вас есть рекомендуемые инструменты?

Редактировать:

Спасибо за все предложения. Из-за нехватки времени я бы предпочел не кататься здесь. И у большинства предложений есть недостаток, что они требуют, чтобы разработчик следовал некоторой процедуре.

Вместо этого, идеальное решение будет отслеживать базу данных SQL на предмет изменений и фиксировать любые обнаруженные изменения в SCM. Например, если в SQL Server есть надстройка, которая может записывать любые изменения DML с пользователем, который внес изменение, а затем зафиксировать сценарий этого объекта в SCM, я был бы в восторге.

Мы внутренне говорили о двух системах: 1. В SQL 2005 используйте права доступа к объектам, чтобы ограничить вас от изменения объекта до тех пор, пока вы не выполните «проверку». Затем процедура регистрации запишет его в SCM. 2. Запустите запланированное задание, чтобы обнаружить любые изменения и зафиксировать их (анонимно) в SCM.

Было бы хорошо, если бы я мог пропустить часть действий пользователя и заставить систему обрабатывать все это автоматически.