Возможно, у вас есть режим изменения настроек базы данных для одного пользователя или администратора, в котором указано «WITH IMMEDIATE ROLLBACK». Это то, что выгоняет пользователей. Уберите это предложение, и оно будет ждать, пока они уйдут (но не остановит и новых).
RE: Ваш Kill sProc: вы можете посмотреть опцию «С НЕМЕДЛЕННЫМ ОТКЛОНЕНИЕМ».
Что касается предотвращения новых подключений: то, что я делал в прошлом, это отключил вход в систему (основной сервер) пользователей приложения, подождите до 10 минут, проверяя каждую минуту, чтобы увидеть, все ли отсутствуют. После этого я выполняю команду ALTER DATABASE ... WITH IMMEDIATE ROLLBACK, а затем выполняю любую функцию OPS, которую необходимо выполнить.
Мне повезло в том, что логины всегда были одноразовыми логинами пользователей приложений (т. Е. Логинами SQL только для этой цели). Если вы не можете этого сделать, то единственное, о чем я могу подумать в данный момент, это быть отказывать в разрешении CONNECT Пользователям БД (субъект базы данных). а потом ОТЗЫВАТЬ ДЕНИ позже. Я никогда не делал так, но это должно выглядеть примерно так:
DENY CONNECT TO SomeDBUserName;