0

我有一个FOO属于 user的存储过程A。用户BEXECUTE权限FOO

中的过程之一FOO使用 DB 链接从BARTABLE@REMOTEDB. A有一个 DB Link 以REMOTEDBuser 身份连接,AREMOTE同时B有一个同名的 DBLink 连接到REMOTEDBuser BREMOTE

B执行时FOO,会使用A's DB Link (connecting as AREMOTE) 还是B's DB Link (Connecting as BREMOTE)?

我问是因为我假设属于特定用户的过程只能访问该用户的 dblink,即使另一个用户拥有EXECUTE该过程也是如此。但不知何故,即使用户AREMOTE没有SELECTon ,这个程序也能正常工作BARTABLE@REMOTEDB,所以我很困惑。

4

1 回答 1

2

该过程应使用为 A 的链接定义的 dblink。任何预言机程序都使用所有者的权利进行处理,除非该程序已使用“调用者的权利”进行定义。祈求者的权利

为过程定义的调用者权限告诉代码使用调用用户本地的权限和对象,而不是代码所有者。默认情况下不这样做的原因通常是最终用户将无权直接更新任何硬对象,但可以通过 API 获得适当的访问权限,这会将正确的业务逻辑应用于更新、插入和删除,以及然后这些对象将公开为最终用户可以访问。

于 2010-06-30T20:16:26.137 回答