SQL Server 用户映射 - 限制用户的数据库视图

SQL Server 用户映射 - 限制用户的数据库视图

我正在添加一个使用 SQL Server 身份验证的新登录名。我将其服务器角色设置为公共,然后进入用户映射,选择此用户应有权访问的唯一数据库。然后,我将默认架构更改为 dbo,并将此用户设为 db_owner。

然后,我使用新用户的凭据连接到实例,不仅可以看到他应该有权访问的数据库,还可以看到所有其他附加的数据库。

我如何才能限制该用户只能看到他有权访问的数据库?

提前致谢!

答案1

为此,您需要删除所有其他数据库的来宾帐户。虽然用户可以查看其他数据库,但他无法打开它们并执行任何操作(除非来宾帐户或这些数据库中的公共角色有权访问任何内容)。

答案2

查看查看任何数据库服务器级别权限。默认情况下,公共角色被授予此权限。您可以将其从公共角色中撤销,然后专门授予您想要允许的登录名。或者,保留对公共角色的默认授予,并拒绝您不想让登录名查看所有数据库的权限。

查看这个答案语法。

使用拒绝并不是完全正确的选择。这样做意味着登录名永远无法看到列出的任何数据库,即使登录名有权访问它们。

答案3

对 Nick Kavadias 答案的补充:不确定这是否是您所需要的,但是它有用吗?

USE AdventureWorks 
GO 
GRANT VIEW MyDatabase TO User1 

相关内容