1

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

На данный момент все SQL-запросы встроены в исходный код приложения. Я хотел бы начать перенос их в хранимые процедуры.

Если мне нужно внести изменения в хранимую процедуру, которая потребует изменения программного обеспечения, как я могу синхронизировать обновления? Например: я меняю sp_SelectRecordByID и публикую обновление для программного обеспечения. Сразу же все запущенные версии программного обеспечения получат сообщение об ошибке при запуске sp_SelectRecordByID. Как только они сбой и обновление получено, все хорошо.

Как предотвратить этот сценарий?

Я придумал несколько идей:

  • Сделать новую хранимую процедуру, и пусть старый отмирают медленно
  • Добавить версию проверки хранимой процедуры. Это очень нежелательно.

Есть ли более эффективные методы или я придерживаюсь этих параметров?

ответ

1

Из того, что я понял, что это скорее вопрос развертывания. То, как я вижу это, есть пара вариантов.

Если вы можете развернуть SQL Server и изменения приложения одновременно (или, по крайней мере, рядом с ним), вы можете просто опубликовать оба файла одновременно, но я думаю, что это зависит от системы.

Можете ли вы сделать это в выходные дни, когда нет риска сбоев приложений?

Развертывание новой версии приложения для всех пользователей одновременно? Если да, тогда вы можете просто создать новый SP сначала, развернуть новую версию приложения, а затем удалить старый SP.

В любом случае, надеюсь, что это поможет. Если нет, укажите более подробную информацию о количестве серверов, количестве клиентских приложений и т. Д. ...

+0

Программное обеспечение используется на промышленных предприятиях, которые работают круглосуточно и без выходных. Им поручается перезапустить программное обеспечение между дневными и ночными сменами. Он развертывается для всех пользователей одновременно, но обновление принимается только при первом открытии приложения. Я думаю, что я застрял в создании/удалении процедур. – MrZander

0

Вы используете Visual Studio? Вы можете хранить свои хранимые процедуры в проекте базы данных и иметь контроль версий таким образом.

Больше информации здесь: http://msdn.microsoft.com/en-us/library/xee70aty.aspx

+0

Поддерживает ли это несколько серверов баз данных? У меня есть несколько клиентов, каждый из которых имеет свой собственный централизованный сервер и рабочие станции. – MrZander

+0

Это просто проект для хранения структуры базы данных и упрощает управление версиями. Вам по-прежнему необходимо развертывание отдельно (хотя вы также можете генерировать сценарии из него, чтобы упростить его). – Szymon

+0

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