当远端表已经悄悄改了结构,我们该怎样检查 SAP HANA 里的 virtual table 定义
我今天在梳理一组联邦访问链路时,最先盯上的不是查询性能,也不是网络连通性,而是定义是否还对得上。这个点在 SAP HANA 和 HANA Cloud 里很容易被忽略。我们把远端对象映射成 local 端的 virtual table 之后,平时SELECT能跑,很多人就会默认它还是健康的。可一旦远端表的列类型、长度、主键、可空性,甚至权限状态发生变化,本地这层定义就可能已经落后了。SAP 官方为这个场景提供了专门的 SQL 检查入口,作用就是比对本地保存的 virtual table 定义,与当前从远端系统实时取回来的表定义之间有没有偏差。官方也明确提到,这类检查发现的是本地定义和远端定义之间的不一致,而这些不一致并不一定都会造成故障,只是其中一部分会在执行 SQL 时演变成真正的错误。(SAP Help Portal)
很多项目里,virtual table 出问题并不是因为创建那一刻有错误,而是因为系统上线之后,远端对象还在继续演化。开发团队在源系统里加了一列,数据治理团队把NULL改成NOT NULL,或者 DBA 调整了主键列组合,本地映射层却没有同步刷新。到了这个阶段,表面上看像是一次普通的查询异常,往深里看,其实是元数据漂
