Назад | Перейти на главную страницу

Сопоставление пользователей SQL Server - ограничение просмотра баз данных для пользователя

Я добавляю новый вход с проверкой подлинности SQL Server. Я установил его роль сервера как общедоступную, а затем перешел в режим сопоставления пользователей, выбрав единственную базу данных, к которой этот пользователь должен иметь доступ. Затем я изменил схему по умолчанию на dbo и сделал этого пользователя db_owner.

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

Как я могу ограничить этого пользователя, чтобы он просто видел базу данных, к которой у него есть доступ?

Заранее спасибо!

Для этого вам нужно удалить гостевую учетную запись для всех остальных баз данных. Хотя пользователь может видеть другие базы данных, он не может их открывать и делать что-либо (если гостевая учетная запись или публичная роль в этих базах данных не имеют доступа к чему-либо).

Проверьте ПРОСМОТРЕТЬ ЛЮБУЮ БАЗУ ДАННЫХ разрешение на уровне сервера. Это разрешение предоставляется публичной роли по умолчанию. Вы можете отозвать его для всех, а затем предоставить его специально для тех логинов, которые вы хотите разрешить. В качестве альтернативы, оставьте разрешение по умолчанию на общедоступном и запретите разрешение на вход, если вы не хотите видеть все базы данных.

Проверять, выписываться этот ответ для синтаксиса.

Использование отрицания - не совсем альтернатива. Это будет означать, что логин никогда не увидит перечисленные базы данных, даже если у логина есть к ним разрешение.

Дополнение к ответу Ника Кавадиаса: Не уверен, что это то, что вам нужно, но работает ли это?

USE AdventureWorks 
GO 
GRANT VIEW MyDatabase TO User1