SQL Server User Mapping - Ограничение просмотра баз данных для пользователя
Я добавляю новый логин с аутентификацией SQL Server. Я установил роль сервера как общедоступную, а затем перешел в отображение пользователей, выбрав единственную базу данных, к которой у этого пользователя должен быть доступ. Затем я изменил Схему по умолчанию на dbo и сделал этого пользователя db_owner.
Затем я подключаюсь к экземпляру, используя учетные данные нового пользователя, и вижу не только базу данных, к которой он должен иметь доступ, но и все остальные подключенные базы данных.
Как я могу ограничить этого пользователя только просмотром базы данных, к которой он имеет доступ?
Заранее спасибо!
3 ответа
Для этого вам необходимо удалить гостевую учетную запись для всех других баз данных. Хотя пользователь может видеть другие базы данных, он не может их открывать и что-либо делать (если только у гостевой учетной записи или общедоступной роли в этих базах данных нет доступа к чему-либо).
Приложение к Нику Кавадиасу: Не уверен, что это то, что тебе нужно, но работает ли это?
USE AdventureWorks
GO
GRANT VIEW MyDatabase TO User1
Проверьте разрешение на просмотр любого сервера базы данных. Публичной роли предоставляется это разрешение по умолчанию. Вы можете отозвать его из общего доступа, а затем предоставить его специально для входа, которые вы хотите разрешить. Или оставьте грант по умолчанию на общедоступном и запретите вход в систему, если вы не хотите видеть все базы данных.
Проверьте этот ответ для синтаксиса.
Использование отрицания не совсем альтернатива. Это будет означать, что при входе в систему никогда не будет отображаться ни одной базы данных, даже если у входа есть разрешение.