仅允许通过 ODBC 读取特定 SQL Server 用户的视图

仅允许通过 ODBC 读取特定 SQL Server 用户的视图

新手问题:我有一位设计师,他从 SQL Server [2008] 数据库中读取信息。我为他设置了一些视图,以便从中提取数据,并授予他的用户 db_dataread 角色的成员身份。他的程序使用 ODBC 连接来获取数据。

但是,这允许他读取所有表、系统视图和表,从而需要用户进行不必要的搜索和混淆。

有没有办法将他所能看到的限制在我为他创建的少数视图上?

[编辑:我创建了一个新的测试用户和一个新的测试 ODBC 连接,没有授予任何权限,结果也没有变化。据我所知,这是因为所有用户都是 PUBLIC 服务器角色的一部分。公共角色似乎为所有系统对象授予了 SELECT 特权。有人知道其他情况吗?]

答案1

从 db_datareader 角色中删除用户,并只授予它针对您为其创建的视图的 SELECT 权限。您没有提到 SQL Server 的版本,但起点总是打开用户的属性屏幕并寻找显示权限的内容。

答案2

CodeByMoonlight 是正确的。您需要删除 db_datareader 角色。

这里有几个不同的选择:

  1. 按照 CodeByMoonlight 的建议操作,只向用户授予您希望他拥有的视图的权限。如果您不打算让其他用户访问相同类型的内容,那么这种方法就很好。

  2. 创建一个架构并为其分配 CodeByMoonlight 建议的权限。这将允许您向其他人授予相同的访问权限。

    2008 架构权限链 = Server.DB.Schema.Object

相关内容