2009-08-10 3 views
1

Я знаю, что это часто задаваемый вопрос на этих досках. И, как правило, речь идет о том, как управлять изменениями, внесенными в базу данных, прежде чем вы даже начнете развертывать их. Более того, ответ заключался в том, чтобы сценарий базы данных и сохранить ее в sourcecontrol, а затем любые дополнительные обновления сохраняются в виде сценариев в версия управления тоже. (например, Tool to upgrade SQL Express database after deployment)Как применить обновления баз после развертывания?

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

+0

update: это приложение для клиентского сервера. – superartsy

ответ

1

Чтобы добавить к скрипту, выполните резервное копирование базы данных (или, по крайней мере, таблиц, которые вы меняете!), Прежде чем применять изменения.

0

Как пользователь, я думаю, что я предпочел бы, чтобы это произошло во время установки, и немного дальше, чтобы установщик мог откинуться назад в случае сбоя. Мое мышление здесь в том, что, если я устанавливаю обновление, я хотел бы знать, когда будет сделано обновление, что это действительно сделано и преуспело. Я не хочу, чтобы сообщение появилось в следующий раз, когда я запустил его, сообщив мне, что что-то не удалось, и я потенциально потерял все свои данные. Я бы предположил, что системный администратор, вероятно, также оценит обратную связь времени установки (конечно, не имеет значения, не будет ли ваше веб-приложение не то, что будет установлено в сети). Кроме того, как сказал ראוב,, резервное копирование базы данных было бы приятным удобством.

0

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

Если у вас есть установщик сервера, вы можете его разместить, поскольку структура базы данных будет только меняться. Поскольку установщикам-клиенту нужно будет узнать об изменениях, было бы неплохо иметь способ обнаружить изменение версии базы данных, а для старого клиента можно будет автоматически загрузить обновление клиента с сервера и применить его.

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

Конечно, это все BS, если это не клиент-сервер.

Смежные вопросы