Вопрос

Я ищу информацию относительно следующего:

Каковы лучшие практики для обновления схемы моего DEV DB к моей продукции БД или даже более кратко создавая изменения схемы БД в целом.

Производственная база данных является задней частью двух различных сайтов ASP.NET.

Наша процесс изменения схемы является довольно надежным с каждой «миграцией», фактически являясь файлом .cs, содержащий изменение схемы. Затем мы будем использовать ADO.NET, чтобы применить изменения схемы против БД.

Мой вопрос больше о подключении базы данных.

Должен ли я остановить два сайта, которые получают доступ к БД. Я предполагаю, что я должен. Должен ли я поставить БД в один пользовательский режим. Похоже, я должен, но я не совсем уверен в этом.

Что я могу пропустить? Что такое вещи, которые укусили вас в руке, прежде чем относиться к изменениям схемы БД.

Это было полезно?

Решение

Если обновления меняют вещи, такие как имена столбцов, сохраненные параметры PREC, и т. Д., Тогда всегда принимайте приложения в автономном режиме до выполнения обновления схемы.

Если обновления только для вещей, которые не влияют на нормальную обработку данных, то вы мощь быть в состоянии сделать это «горячим». Эта категория, когда вы добавляете такие вещи, как индексы, таблицы и т. Д.

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

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

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

Кроме того, мы используем инструменты, такие как SQL Redgate, сравнивайте с помощью сценария наших обновлений БД. Это практикуется на промежуточном сервере, который был освежен от производственных данных до фактического толчка, чтобы гарантировать, что нет сюрпризов, и это можно сделать очень быстро.

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

Другие советы

Я не рассматривал маршрут .cs / ado.net, чтобы сделать изменения схемы. Что мы делаем, это создать файлы «DELTA» .SQL - SQL, чтобы внести изменения. Они выполняются против схемы известной ревизии, чтобы внести изменения, и выполнение .sql является частью развертывания.

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

Когда мы развертываем у нас конкретные времена дня / недели, предупреждают пользователей / клиентов, отключенные веб-сайты и т. Д. С «практикой» развертываемых, происходящих почти каждый день на DEV и постановке серверов за последние дни до выпуска, окончательного доверия развертывания в приоритете.

Сохранение изменений схемы в SQL, они больше похожи на «Master» SQL SQL, которые они модифицируют и поэтому легче отслеживать. Меньше для отладки тоже!

Они также управляются в TFS вместе с остальной частью кода.

Идеальная ситуация, но не всегда достижима: вы делаете изменения схемы, которые совместимы с Vu003Cold> Версия вашего сайта. Вы тогда выпустите vu003Cnew> на ваши веб-серверы. Как только все ваши веб-серверы до Vu003Cnew> Затем вы можете выполнять любые очистки (заполнение пропущенных значений и т. Д.), а затем внести подходящие изменения Nullability.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top