Обновление базы данных во время установки - PullRequest
2 голосов
/ 28 декабря 2010

У меня есть приложение на C #, которое во многом является интерфейсом базы данных, которая управляет арендой недвижимости.Тем не менее, база данных развивается вместе с программным обеспечением и иногда требует обновления.

Я бы хотел иметь возможность обновлять базу данных из установщика, а не развертывать набор файлов sql и msi.Я подумал о том, чтобы записать его в запуск программы, но это может вызвать некоторые забавные вещи, если два человека запустят программу одновременно.Программа установлена ​​на одном сервере, а затем удаленно запустила несколько моих людей, поэтому обновление в установщике не позволило бы этим людям.

Как мне обновить базу данных во время установки программы?

Ответы [ 2 ]

0 голосов
/ 28 декабря 2010

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

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

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

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

0 голосов
/ 28 декабря 2010

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

edit: при прерывании и т. Д. Я имею в виду, что db-часть обновления не запустится.

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