新手问题:我有一个从SQL Server [2008]数据库读取信息的devise器。 我已经为他设置了几个视图来从他的用户中获取数据,并授予其用户db_datareadangular色的成员。 他的程序使用ODBC连接来获取数据。
但是,这使得他可以读取所有的表格和系统视图和表格,从而需要对用户进行不必要的search和混淆。
有没有办法将他能看到的东西限制在我为他创造的less数观点上?
[编辑:我创build了一个新的testing用户和一个新的testingODBC连接,没有任何权限,没有任何结果的变化。 从我读过的,这是因为所有用户都是PUBLIC服务器angular色的一部分。 公共angular色似乎给予所有系统对象的SELECT权限。 任何人都知道吗?]
从db_datareaderangular色中删除用户,并将其赋予针对您为其创build的视图的SELECT权限。 你不会提到哪个版本的SQL Server,但是开始点总是打开用户的属性屏幕并寻找说权限的东西。
CodeByMoonlight是正确的。 您需要删除db_datareaderangular色。
这里有几个不同的选项:
像CodeByMoonlight一样build议并授予用户对您希望他拥有的视图的select权限。 如果你从来不打算让其他用户需要访问相同types的东西,这是非常好的。
创build一个Schema并为其分配CodeByMoonlightbuild议的权限。 这将允许你给另一个人同样的访问权限。
2008架构权限链= Server.DB.Schema.Object