我正在用SQL Server身份validation添加一个新的login。 我将其服务器angular色设置为公共,然后进入用户映射,select该用户应该有权访问的唯一数据库。 然后,我将默认架构更改为dbo,并使该用户成为db_owner。
然后使用新用户的凭据连接到实例,我不但可以看到他应该访问的数据库,还可以看到所有其他连接的数据库。
我怎样才能限制这个用户只看到他有权访问的数据库?
提前致谢!
为此,您需要删除所有其他数据库的访客帐户。 虽然用户可以看到其他数据库,但他无法打开它们并执行任何操作(除非访客帐户或这些数据库中的公共angular色有权访问任何内容)。
查看VIEW ANY DATABASE服务器级别权限。 公共angular色默认授予此权限。 您可以从公开处撤销它,然后将其专门授予您要允许的login名。 或者,将默认授权保留为公开状态,并拒绝login您不希望看到所有数据库的权限。
看看这个答案的语法。
使用否认不完全是另一种select。 这样做意味着login无法看到列出的任何数据库,即使login有权限。
尼克·卡瓦迪亚斯的补充答案:不知道这是你需要的,但是这样做的工作?
USE AdventureWorks GO GRANT VIEW MyDatabase TO User1