Проверьте изменения базы данных (контроль версий) - PullRequest
10 голосов
/ 08 октября 2009

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

Например, у меня есть базы данных с таблицей «Версия» (там хранится номер версии). Но база данных может быть доступна и отредактирована разработчиками без изменения номера версии. Если, например, разработчик обновляет хранимую процедуру и не обновляет версию базы данных, состояние не синхронизировано со значением версии.

Как отследить эти изменения? Мне не нужно отслеживать, что изменилось, но мне нужно только проверить, синхронизируются ли таблицы базы данных, представления, процедуры и т. Д. С версией базы данных, сохраненной в таблице версий.

Зачем мне это нужно? При выполнении развертывания мне нужно убедиться, что база данных «правильная». Кроме того, не все таблицы или другие объекты базы данных должны отслеживаться. Можно ли проверить без использования триггеров? Можно ли обойтись без сторонних инструментов? Есть ли в базах данных контрольные суммы?

Допустим, мы используем SQL Server 2005.

Отредактировано:

Я думаю, что я должен предоставить немного больше информации о нашей текущей среде - у нас есть "базовая линия" со всеми сценариями, необходимыми для создания базовой версии (включая объекты данных и "метаданные" для нашего приложения). Однако существует много установок этой «базовой» версии с некоторыми дополнительными объектами базы данных (дополнительные таблицы, представления, процедуры и т. Д.). Когда мы вносим некоторые изменения в «базовую» версию, мы также должны обновить некоторые установки (не все) - тогда мы должны проверить, что «базовая» находится в правильном состоянии.

Спасибо

Ответы [ 11 ]

0 голосов
/ 08 октября 2009

Первый момент: трудно навести порядок без "правил". Или для вашего примера - разработчики, изменяющие что-либо без уведомления, приведут вас к серьезным проблемам.

Во всяком случае - вы говорите "без использования триггеров". Есть какая-то конкретная причина для этого?

Если нет - проверьте триггеры DDL. Такие триггеры - самый простой способ проверить, произошло ли что-то.

И вы даже можете войти, ЧТО происходило.

...