我有 2 个模式,可以说sch1和sch2。每个都由不同的用户拥有。
我确实想将sch2.MyTable(但只是这个对象)的SELECT权限授予sch1过程/视图,并允许在sch1外键约束中引用sch2.MyTable 。
我不想让那些使用 sch2 过程/视图但希望允许间接访问的人直接访问sch2.MyTable 。
基本上 sch2 更重要。sch2 的所有者也可以控制 sch1,但反之则不然。另一方面,sch1 有一些依赖于 sch2 的数据,他们应该能够看到它们并且不应允许从 sch2 删除数据,而 sch1 仍然对它们有一些依赖性。
这可能吗(也许通过同义词)?
因为不,它似乎——不,不可能。除非取消有关“视图和约束”或“不同模式所有者”的部分。
您需要研究使用证书来签署存储过程。这将允许用户访问其他表。
希望以下回答对您有所帮助:
您可以使用信息模式检查权限。
您应该能够通过将存储过程上的 EXEC 和视图上的 SELECT 授予您想要间接访问表的用户来轻松地做到这一点。我们一直在办公室这样做,我们不授予对基础表的权限,只允许通过视图/过程访问基础数据。