查询过程中的计算视图

2020-09-19 20:33发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我创建了以下目录...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我创建了以下目录过程:

创建过程XXXXXXXX(在GGGGMM整数中,在ID_IZPILDES_LAIKS整数中)
 语言SQLSCRIPT AS

 开始

 插入YYYYYYYY(ID_IZPILDES_LAIKS,ID_NODOKLMAKS,GADS_MENESIS,ID_KRITERIJS,VERTIBA)
      SELECT:ID_IZPILDES_LAIKS,
             NM_ID,
             :GGGGMM * 100 +1 AS GADS_MENESIS,
             KRIT_ID,
             SUM(KRIT_VERTIBA)
      FROM" _SYS_BIC"。" ZZZZ/BBBB"(PLACEHOLDER。" $$ PERIODS $$" =>:GGGGMM)
      GROUP BY GADS_MENESIS,KRIT_ID,NM_ID;
 结束;
 

如您所见,过程使用计算视图。 我可以将其称为过程的创建者/所有者,但是不能将此过程的 EXECUTE 权限授予其他用户。 我得到的错误看起来像这样:

特权不足:未获得授予该过程特权的权限

即使我授予整个架构的 EXECUTE 权限,用户仍然无法调用该过程。 他遇到错误:

权限不足:未经授权

其他用户可以查询计算视图,甚至可以在表上执行 INSERT 语句。 但是,当我将 INSERT 语句放入过程中时,我无法授予权限和/或以其他用户身份执行它。

是因为计算视图吗? 我会错过某些特权吗?

我还在一个软件包中创建了一个存储过程,此问题已解决,但我想知道它不起作用的原因。 此过程与我使用的其他过程之间的唯一区别是,它使用的是计算视图,而不是常规的表/视图。 这是唯一的方法吗?

2条回答
黑丝骑士
2020-09-19 21:05 .采纳回答

这是由于对象激活在SAP HANA中的工作方式所致。

内部用户_SYS_REPO创建存储库工件的运行时版本。 然后,这些对象归_SYS_REPO所有。

为了向任何用户提供访问权限,_SYS_REPO将这些特权授予激活对象的用户以及所有角色对象。 _SYS_REPO要求具有GRANT OPTION的特权才能执行激活和进一步的特权授予,但它不会授予GRANT OPTION的那些特权。

底线:您的用户可以选择计算视图,但不能将特权授予其他人(运行过程所需)。

当_SYS_REPO激活该过程时,该问题消失了,因为该用户具有WITH GRANT OPTION特权。

这是无论如何开发程序的推荐方法。

如果您绝对想将GRANT OPTION的特权强制给其他用户,那也是可能的。 在我的博客文章此处

一周热门 更多>