通过ODBC限制访问仅限模式视图SQL 2008

对于SQL安全来说,我相当绿色,所以也许有人可以帮助我。 我们有一个数据库应用程序,安装时默认授予数据库中所有表的公共angular色访问权限。 当你创build一个SQL用户时,它将用户添加到公共angular色中,所以新用户将有权访问所有表。

我们需要将第三方ODBC应用程序连接到数据库。 我们创build了一个从同一个数据库中的表中拉出的视图,我们希望连接只能访问创build的视图。 我们决定使用模式来应用安全性,而不是试图从所有表中删除公共angular色。

所有的默认表都在SCHEMA1 。 我们把VIEW放在SCHEMA2下,创buildUSERA拒绝SELECTSCHEMA1 ,并把SELECT授予SCHEMA2 。 两个SCHEMAS都拥有相同的所有者。

当我使用AccesstestingODBC并尝试打开VIEW ,收到以下错误

对象(SCHEMA1中的表名)上的SELECT权限被拒绝….

我认为这是因为我拒绝了SELECTSCHEMA1 ,它保存了VIEW的引用表。 如果是这样的话,你将如何通过ODBC来限制对特定表的访问?

在我发布这篇文章之后,我开始search更多关于从架构中撤消公共angular色权限的一个可能选项,但没有经过testing,但也遇到了“应用程序angular色”。 我仍然需要再读一点,但是想知道这是否是我应该前进的方向。