点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
最近,我们将开发转移到了云端。
我们的MTA应用程序在云中使用HANA DB服务,并在运行时创建DB表(使用CREATE TABLE语句)。 我们还使用HDI容器来定义数据库工件并将其部署到云中。
我们会遇到以下情况:
每次我们部署HDI时,它都会在运行时删除该应用程序创建的所有表。 HDI中定义的所有表均保持不变。
在使用云之前,我们使用本地HANA XSA安装,并且没有这种影响:每次部署后,所有表(在HDI中定义或在运行时创建)都保持不变。
是错误还是功能?
借助SAP支持,我们找到了解决方法。 但是首先,这是根本原因的解释:
因此,要克服动态创建表的问题,我们在创建后立即使用ALTER TABLE ... OWNER TO = <用户名>更改所有权。 我们使用一个特殊用户,该用户拥有在部署阶段创建的所有容器对象: #OO
显然,应该有一个表,其中包含对象的所有权信息,因为看起来用DDL更改所有权选项仅适用于表。
另一种解决方法是使用存储过程创建对象,只是不要忘记添加
SQL安全定义器
到过程定义。 在这种情况下,将通过容器对象所有者创建通过该过程创建的对象。
感谢谢尔盖分享答案。
谢尔盖嗨
您找到解决方案了吗? 我们也面临着同样的问题,但无法为此找到任何解决方案。
非常感谢,
嗨吉加尔,
是的,我们找到了一种解决方法,请参见答案。 因此,对于表,您可以使用ALTER TABLE DDL语句更改所有权;对于其他类型的对象,应使用存储过程创建对象,并且不要忘记在该过程中添加SQL SECURITY DEFINER选项。
一周热门 更多>