2009-11-24 2 views
0

Мы хотим, чтобы базы данных наших тестовых серверов обновлялись из баз данных нашего производственного сервера в ночное время, чтобы гарантировать, что мы разрабатываем самые последние данные. Тем не менее, мы хотим гарантировать, что любые fn, sp и т. Д., Которые мы сейчас работаем в среде разработки, не перезаписываются процессом резервного копирования. Мы думали о том, что у вас есть программа prebackup, которая сохраняет объекты, выбранные нашими разработчиками, и программу postbackup, чтобы добавить их обратно после завершения процесса резервного копирования.Автоматическое резервное копирование SQL Server 2008

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

ответ

2

Все объекты в наших базах данных хранятся в кодовых таблицах, представлениях, триггерах, хранимых процедурах, все - если мы ожидаем найти его в базе данных, то оно должно быть в DDL в коде, который мы можем запустить. Фактические изменения схемы версий - так что в базе данных есть таблица, в которой говорится, что это версия схемы «n», и если это не текущая версия (в соответствии с кодом обновления), мы вносим необходимые изменения.

Мы стараемся выделить триггеры и представления - не будем, хотя мы, вероятно, должны многое сделать с SP и FN - с удалением и повторным созданием кода, который действителен для текущей версии схемы. Соответственно, это должно быть «безопасно», чтобы отбрасывать и воссоздавать все, что не является таблицей, хотя будут проблемы с секвенированием как с падением, так и с созданием, если есть зависимости между объектами. Самое приятное в этом заключается в том, что мы с уверенностью можем привести схему от нового к текущему и иметь уверенность в том, что любой из экземпляр схемы согласован.

Расширение вашего случая, если у вас есть возможность запускать код обновления схемы, включая код для воссоздания всех объектов базы данных в соответствии с текущими определениями, тогда ваша проблема должна существенно исчезнуть ... резервное копирование, восстановление, запуск схемы логика maint. Это будет иметь дополнительную выгоду, что вы можете ввести изменения схемы (таблицы) в dev-серверах и по-прежнему поддерживать одну и ту же логику обновления.

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