我有40个数据库附加到我的2014实例中。我需要创建一个新的用户与只读访问1数据库。他甚至看不到附在我的实例上的数据库的名字。
我已经应用了我在https://stackoverflow.com/a/10219004/4728323找到的解决方案,但这只允许只读访问1个数据库。但是,在使用该新用户登录时,其他数据库的名称是可见的(不允许访问,但数据库列表中可以看到db名称)。
发布于 2018-03-16 11:48:40
这是有可能实现的。
包含的数据库可从MS 2012到后续使用。
1-通过单击对象资源管理器中的服务器名称来更改实例设置。
转到“属性”窗口中的“高级”选项卡。
3-将属性“启用包含的属性”设置为"True",单击"Ok“。
4-现在右击数据库,获得所需数据库的属性。
5-到“选项”选项卡,并将“包容类型”设置为“部分”。
6-现在右键单击数据库中的用户节点并添加用户,选择"SQL“选项并创建新用户。
资料来源:https://www.mssqltips.com/sqlservertip/2428/sql-server-2012-contained-database-feature/
发布于 2018-03-15 18:49:29
正如https://technet.microsoft.com/en-us/library/ms189077(v=sql.105).aspx中所指定的,“默认情况下,视图任何数据库权限都授予公共角色。因此,默认情况下,连接到Server实例的每个用户都可以看到实例中的所有数据库。”
要实现您想要的结果,您应该撤销public角色的public权限:
REVOKE VIEW ANY DATABASE TO public或者,您只可以拒绝该用户的此权限:
DENY VIEW ANY DATABASE TO YourRestrictedUserhttps://stackoverflow.com/questions/49294543
复制相似问题