HANA审核表存储"?" 在列中

2020-09-24 10:02发布

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

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


我对SAP绝对陌生,正在尝试在HANA上实施审核日志。

我已经成功做到了,这样,每条记录的创建,更新,删除操作都会在AUDIT_LOG表中插入一行。

但是,许多值都存储为"?" 例如PREV_VALUE,VALUE,KEY等。

在STATEMENT列下,update语句也没有提供足够的信息。

更新" TDH"。" TABLEEXAMPLE" PERM设置为" SNO" = TEMP。" SNO"," EXAMPLE1" = TEMP。" EXAMPLE2"," EXAMPLE4" = TEMP。" ACCOM_PAID_IND"," VALID_FROM" = TEMP。 " PERM,"#EXAMPLE3" TEMP,其中PERM。" KEY" = ?,(4)

我对语句进行了一些编辑,以确保不显示表名。

我可以知道可能出了什么问题吗?

请参见下图作为示例

(16.6 kB)

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

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


我对SAP绝对陌生,正在尝试在HANA上实施审核日志。

我已经成功做到了,这样,每条记录的创建,更新,删除操作都会在AUDIT_LOG表中插入一行。

但是,许多值都存储为"?" 例如PREV_VALUE,VALUE,KEY等。

在STATEMENT列下,update语句也没有提供足够的信息。

更新" TDH"。" TABLEEXAMPLE" PERM设置为" SNO" = TEMP。" SNO"," EXAMPLE1" = TEMP。" EXAMPLE2"," EXAMPLE4" = TEMP。" ACCOM_PAID_IND"," VALID_FROM" = TEMP。 " PERM,"#EXAMPLE3" TEMP,其中PERM。" KEY" = ?,(4)

我对语句进行了一些编辑,以确保不显示表名。

我可以知道可能出了什么问题吗?

请参见下图作为示例

(16.6 kB)
付费偷看设置
发送
2条回答
Violet凡
1楼-- · 2020-09-24 10:49

审核日志不跟踪已更改的表记录的值。

PREV_VALUE和VALUE列属于与数据库参数更改(FILE_NAME,SECTION,KEY,PREV_VALUE,VALUE)有关的一组列。

由于AUDIT_LOG视图中的每个条目都代表一个已审核的操作,因此很明显,例如 批量更新无法与所有受影响的列/表的前后值一起记录。

AUDIT_LOG视图中的其他列涵盖特权,错误代码和远程数据库访问。

小灯塔
2楼-- · 2020-09-24 10:37

没有其他可以自动执行此操作的HANA功能。

就个人而言,由于db-triggers带来了许多问题,因此我不喜欢通过触发器进行"以防万一"日志记录。 如果实际上有一项业务需要能够使用前后值来查看记录更改,那么通常仅在单个表上仅使用一组触发器就不能轻松满足该需求。 因此,现在您必须"记录"多个连接的表,并且必须有一种方法来查看上下文中应用程序记录的更改,例如 将相关表正确连接在一起,以查看更改了哪些业务记录。

通过使用数据更改代码实现日志记录,可以更好地解决IMO的此类要求。 可以通过表日志记录在ABAP级别上,也可以代替构建触发器,而通过覆盖表更新和保留记录日志的过程来实现数据更改。

这两个选项均导致可管理且易于理解的系统,而引入db-triggers则可能导致混乱和误解。 在表上完全没有db-triggers(根本不明显)(除非明确寻找它们,否则您不会在任何管理或开发工具中"看到"它们)。 而且,它们在很大程度上取决于源表的结构,如果在更改源表或目标表后无法自动重新部署数据库触发器,那么最终将导致大量不必要的维护工作。

总而言之,db-trigger是一种相当粗糙的低级构造,但是应用程序记录日志记录是高级别的要求。 对我来说,这不是工作的正确工具。

-拉斯

一周热门 更多>