Запретить пользователю устанавливать БД в однопользовательский режим
У нас есть требование к приложению (NextGen ERH) для работы с БД SQL Server (2016, локальная) под учетными данными с ролью sysadmin.
Нам нужно не допустить, чтобы этот технический пользователь переключил БД в однопользовательский режим - мы заметили, что иногда такое случается, и хотели бы предотвратить будущие случаи.
Итак, вопрос - как мне этого добиться? Revoke alter any database from username
- не помогло, пользователь все еще может установить БД в однопользовательский режим.
Пользователь БД является локальным для сервера SQL, а не для проверки подлинности Windows.
1 ответ
Если вы хотите запретить всю базу данных из однопользовательского режима, вы можете использовать следующий код
exec sp_dboption 'your_database_name_goes_here', 'single user', 'FALSE'
Для версии сервера sql больше 2005
ALTER DATABASE 'your_database_name_goes_here' SET MULTI_USER
Если вы хотите, чтобы база данных была переведена в режим одного сервера только сисадмином, вы можете использовать следующий код
ALTER DATABASE 'your_database_name_goes_here'
SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
Если технический пользователь не принадлежит роли sysadmin, приведенный выше код не позволит ему установить db в однопользовательский режим.
РЕДАКТИРОВАТЬ
Чтобы установить базу данных в многопользовательский режим с использованием SSMS
- В обозревателе объектов подключитесь к экземпляру компонента SQL Server Database Engine, а затем разверните этот экземпляр.
- Щелкните правой кнопкой мыши базу данных, чтобы изменить, а затем нажмите Свойства.
- В диалоговом окне "Свойства базы данных" перейдите на страницу "Параметры".
- В опции "Ограничить доступ" выберите "Несколько".
- Если к базе данных подключены другие пользователи, появится сообщение "Открытые соединения". Чтобы изменить свойство и закрыть все остальные подключения, нажмите кнопку "Да".