Запретить пользователю устанавливать БД в однопользовательский режим

У нас есть требование к приложению (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, а затем разверните этот экземпляр.
  • Щелкните правой кнопкой мыши базу данных, чтобы изменить, а затем нажмите Свойства.
  • В диалоговом окне "Свойства базы данных" перейдите на страницу "Параметры".
  • В опции "Ограничить доступ" выберите "Несколько".
  • Если к базе данных подключены другие пользователи, появится сообщение "Открытые соединения". Чтобы изменить свойство и закрыть все остальные подключения, нажмите кнопку "Да".
Другие вопросы по тегам