Как я могу заблокировать все обновления БД для всех пользователей, кроме одного (администратора)? - PullRequest
1 голос
/ 05 июня 2019

У нас есть процесс, который должен запускаться по отношению к БД, используемой веб-приложением, и мы должны предотвращать все остальные обновления во время выполнения этого процесса.Есть ли какой-либо глобальный способ сделать это, возможно, через nHibernate, .NET или, может быть, напрямую в Oracle?

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

1 Ответ

1 голос
/ 06 июня 2019

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

Завершите работу БД, откройте ее в монопольном режиме, внесите изменения, а затем откройте ее для всех.

Попытка заблокировать все необходимые таблицы с помощью LOCK TABLE. Это может генерировать исключения взаимоблокировок в зависимости от порядка выполнения блокировок.

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