Quantcast
Channel: SCN : All Content - All Communities
Viewing all articles
Browse latest Browse all 8800

Delivery Unit导入失败的简单建议

$
0
0

我们一般在导入Delivery Unit的时候经常会碰到各种各样的问题,诸如无法创建对应的synonym,对象无法找到等错误。针对这种普遍问题,我们首先会重点关注那些“对象没有找到”的错误信息,如果该依赖的对象在content是不存在的话,我们就可以建议用户去更新这个DU,重新导入。具体的过程我们通过以下例子来说明: 首先我们在studio中导入DU是经常会看到这样的提示框,提示激活某些object的时候出错了。

1.jpg

看到这样的错误信息,我们首先可以去检查哪些对象找不到的错误,打开hdbrole对象“sap.hana.democontent.epm.roles.User.hdbrole”依赖于一个schema "sap.hana.democontent.epm.data:SAP_HANA_DEMO.hdbschema",而我们发现该对象在系统中是不存在的,这样我们就找到根本原因,这时我们需要建议用户去修改该hdbrole文件或者去添加对应的schema。

22.jpg

对于另外一种错误“found overlapping key usage”, 这种错误一般是由于我们用两个hdbti文件给相同的table导入数据。首先在对应的package中找到该对象,右键regenate该对象,我们得到了该对象激活出错的原因。

21.JPG

重新激活该对象,我们得到了如下的提示信息,这是因为这两个hdbti文件给同一个表中导入数据,通过打开这两个hdbti文件我们可以确认该错误信息。

23.jpg

24.jpg25.jpg

还有一种是对象不可知的错误,通过检查该对象的定义,我们发现该对象是并没有被激活的。regenerate该对象,我们发现依赖的hdbprocedure没有对应的runtime objects, 这说明该hdbprocedure是没有没激活的,所以我们需要去check该hdbprocedure为什么没有被激活。

26.jpg27.jpg

打开该hdbprcedure文件,regenerate该对象,我们发现其调用的procedure “SAL_AREA_COMPILE_HANA_QUERY_PROC” 是无效的,而该procedure在系统中是并不存在的,这样我们就找到其激活失败的根本原因。

28.jpg

如果用户确实需要引用这个对象,而且用户所要导入的DU是依赖于其他DU中的对象的,这时我们需要去查看依赖的DU的版本是不是太老了,这个需要跟其他系统的DU的版本进行对比。

29.jpg

导入DU是失败的另一个表象原因是由于激活的顺序不对,这种情况在SP5之前的版本中是存在问题的,因为各个对象之间的依赖关系被破坏掉了,所以需要我们手动在新版本的系统里对所有相关的对象进行简单的编辑,激活,恢复他们的依赖关系,然后创建新的DU,这样导入的时候就没问题了. 如果是SP5之后的版本,我们就需要去check具体是什么原因导致导入DU失败。

30.jpg

打开对应的hdbprocedure文件,我们发现其依赖于一个column view. 然后按照依赖关系regenerate该view "vc_item_hierarchy"和hdbprocedure文件,我们发现整个过程是没有任何错误的,所以我们简单断定应该是激活顺序的问题,其依赖关系是有问题的。

select * from "_SYS_BIC"."sap.plc.db.calcengine.views/vc_item_hierarchy/items/hier/items";

这时,我们就需要在用户创建该DU的系统上去查看"_SYS_REPO"."ACTIVE_OBJECTCROSSREF"这张表,以确定对象之间的依赖关系是不是正确的。 我们发现该hdbprocedure依赖的object是“vc_item_hierarchyitemshieritems”,该view中间的斜杠"/"被省略掉了,这就说明对象之间的依赖关系是有问题的,所以导致导入DU激活的时候出现对象找不到的错误。针对这个问题我们需要去确定为什么依赖的view中的斜杠被省略掉了,我们最后就发现了一个关于这个问题的一个bug。

31.jpg

还有一种特殊情况,DU中包含很多hdbdd文件,在激活的时候提示激活是成功的,但是并没有创建对应的runtime 对象,所以无法激活依赖这些runtime对象的上层对象,这个需要在另外一种特殊模式下恢复DB的状态,具体过程是:在configuration中创建变量cds/internal,其值设为"activateAgainstNative",然后重新导入DU, 删掉之前的设置的变量,这样整个DB的状态就恢复了,最后重新导入DU就没有问题了。

  • Delivery Unit Import
  • Error occurred during import of delivery unit./nRepository: objects are already locked by another change;Repository::import(): some of the imported objects are already locked due to following changes_entries: {changeID: (srcSystem: XS7, changeNumber: 2820, container: ), objectID: {tenant: , package: sap.hana.uis.clients.ushell-app.js.sap.hana.uis.ushell.renderers.pagebuilder.images, name: Arrow-combo, suffix: png}}, {changeID: (srcSystem: XS7, changeNumber: 2820, container: ), objectID: {tenant: , package: sap.hana.uis.clients.ushell-app.js.sap.hana.uis.ushell.renderers.pagebuilder.images, name: Down-disabled, suffix: png}

这是因为用户将change manager打开了,所以第一次import会生成该对象对应的changeID.第二次导入的时候就会提示对象被锁住了,这时需要release掉该changeID,然后重新导入DU就OK了。

11.png


Viewing all articles
Browse latest Browse all 8800

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>