如何解决访问另一个 HDI 容器中的表函数
我有一个 HDI 容器 (HDI1
) 可以访问另一个 HDI 容器 (TF_1
) 中的表函数 (HDI2
),我创建了同义词,可以正常工作很好。
但是当 TF_1
调用 TF_2
中的另一个表函数 (HDI2
) 时,我收到“Insufficient Privilege”错误。我必须为 TF_2
创建同义词。
正确吗?为什么我不需要为其他对象类型(例如计算视图)执行此操作
谢谢
解决方法
我在没有 HDI 的情况下重现了这个场景,而是使用了普通的 SQL 架构和用户。
以 HDI 2 的所有者身份创建和运行 TF_1
和 TF_2
工作正常。
将 EXECUTE
上的 TF_1
授予 HDI 1 的所有者也可以正常工作。 HDI 1 之后可以成功运行 TF_1
,但不能成功运行 TF_2
。
到目前为止,一切都很好。
对于 HDI,情况变得更加复杂,因为您的开发者用户不是 HDI 1 架构的所有者。
相反,在您的代码激活/部署时,HDI 基础结构作为HDI 1 的实际所有者连接以创建对象,然后运行向其他用户(包括您的开发者用户)发送一系列 GRANT
以允许执行该函数。
现在,为了进一步授予执行权限,需要在 grant
语句中使用 GRANT OPTION*。 HDI 基础设施通常会正确涵盖这一细节。
但是,在这种情况下,很明显,管理 HDI 1 的用户没有授予选项来进一步其他用户的特权。
我建议查看激活日志、为跨容器访问声明了哪些 GRANTS,并在激活过程中注意“缺少权限”错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。