Вот что я делаю. Это не приводит к нулевому простою, но может закончиться менее чем за секунду.
Создайте базу данных, которая имеет только элементы интерфейса с вашей реальной базой данных. В моем случае он содержит только определения представлений, и все пользовательские запросы проходят через эту базу данных.
Создайте новую базу данных каждую ночь. Когда это будет сделано, обновите определения представлений, чтобы они ссылались на новую базу данных. Я бы порекомендовал либо отключить доступ пользователей к базе данных, содержащей представления, во время их обновления, либо удалить все представления и воссоздать их - это предотвращает частичный доступ к старой базе данных. Поскольку создание представлений происходит быстро, это должна быть очень быстрая операция.
Мы делаем все это через работу. Фактически, прежде чем изменять производственные представления, мы проверяем создание представления в другой базе данных, чтобы убедиться, что все они работают.
Очевидно, что если вы используете alter view
вместо того, чтобы требовать согласованности во всех представлениях, тогда не будет простоев, только краткий период несоответствия.