Как применять обновления базы данных после развертывания? - PullRequest
1 голос
/ 10 августа 2009

я знаю, что это часто задаваемый вопрос на этих досках. И обычно вопрос заключался в том, как управлять изменениями, вносимыми в базу данных, прежде чем вы даже приступили к их развертыванию. В большинстве случаев ответ заключался в том, чтобы создать сценарий для базы данных и сохранить ее в sourcecontrol, а затем любые дополнительные обновления будут сохранены как управление версиями тоже (например, Инструмент для обновления базы данных SQL Express после развертывания )

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

Ответы [ 3 ]

1 голос
/ 10 августа 2009

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

0 голосов
/ 10 августа 2009

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

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

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

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

0 голосов
/ 10 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...