如何检查SAP HANA数据库对象变更?哪种方案更可行?
SAP HANA生产环境数据库对象变更记录方案对比
方案1:SQL查询SYS.M_OBJECT_HISTORY视图
这个方案是更可行的选择,针对HANA数据库对象变更的记录更全面准确:
- 你提供的SQL语句是正确的:
SELECT OH.OBJECT_NAME, OH.OBJECT_TYPE, OH.SCHEMA_NAME, OH.USER_NAME, OH.OPERATION_TYPE, OH.TIMESTAMP FROM SYS.M_OBJECT_HISTORY OH WHERE OH.IS_PRODUCED = 'TRUE' ORDER BY OH.TIMESTAMP DESC;
SYS.M_OBJECT_HISTORY是HANA原生的系统监控视图,专门追踪HANA数据库对象(表、视图、存储过程等)的创建、修改、删除等操作——不管变更通过ABAP传输请求发起,还是直接在HANA层执行DDL操作,都会被记录。IS_PRODUCED = 'TRUE'的过滤条件有效,该字段用于区分是否为生产环境中正式生效的对象变更记录。- 返回字段完全覆盖你的需求:对象名、类型、所属schema、操作用户、操作类型、变更时间,按时间倒序的排序逻辑也能让你优先看到最新变更。
方案2:SE16查询E070表
这个方案有明显局限性,仅适用于特定场景:
- E070是ABAP系统的传输请求表头表,仅记录通过ABAP传输请求导入到系统的变更,无法追踪直接在HANA层执行的DDL操作(比如通过HANA Studio、HDBSQL直接修改数据库对象)。
- 它记录的是传输请求的整体信息,不是直接的HANA数据库对象变更细节,需要关联其他表(比如E071)才能对应到具体对象,操作更繁琐且覆盖范围不全。
总结
如果你的需求是获取所有HANA生产环境数据库对象的变更记录(包含所有操作途径的变更),方案1是最优选择;如果仅关注通过ABAP传输请求导入的变更,方案2才适用,但无法满足全面性要求。
内容的提问来源于stack exchange,提问作者Jorge Florez Caro
相关产品推荐
相关产品推荐

