首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转 ABAP 多数据库连接:标准连接、二级连接与服务连接的实战指南

在国内一些复杂度较高的 ABAP 实现项目中,需要在同一个 ABAP 报表中同时访问多个数据库模式,甚至完全不同的数据库系统。

SAP 在 NetWeaver 里通过 Open SQL Multi‑Connect 机制,提供了标准连接(Standard Connection)、二级连接(Secondary Connection)与服务连接(Service Connection)三种方式,并允许它们在 Open SQL、Native SQL (EXEC SQL)、ADBC 以及 AMDP 之间共享。

多连接为何重要?

在传统 ABAP 应用中,绝大多数 SQL 都通过「标准连接」访问系统本身的数据库模式(SAP Help Portal)。

然而,随着数据湖、审计日志、预归档等需求的增加,后台往往需要跨库写入或读取只读副本来减轻主库压力。

二级连接和服务连接正是为此而生:前者可以通向任意受 SAP 支持的外部数据库,后者则在标准数据库内部,建立独立事务上下文,两者皆可通过同一工作进程并行存在。

标准连接 (Standard Connection)

特点:随应用服务器启动即存在,无法关闭;所有内部会话共享;别名 DEFAULT 可显式指定(SAP Help Portal)。

典型场景:绝大多数业务 SQL;无需额外配置。

SAP 帮助文档里给出了标准连接的一个使用例子:

DELETE FROM demo_update CONNECTION default.INSERT demo_update CONNECTION defaultFROM @( VALUE #( id = 'X'  col1 = 1 col2 = 2 col3 = 3 col4 = 4 ) ).COMMIT CONNECTION default.

二级连接 (Secondary Connection)

定义:在表 DBCON 内维护,键值 CON_NAME 作为连接名,区分大小写。

限制:目标数据库必须受 SAP 支持;需部署相应 DBSL(Database Shared Library) 与客户端库。

用法:在任何 SQL 技术栈中使用同名标识符即可,首次调用自动打开连接;最多 15 条二级/服务连接同时存在于同一工作进程中,加上标准连接共 16 条上限。

这个数据库连接数目的上限,出自以下 SAP 帮助文档:

https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abenopensql_multiconnect.htm

二级连接的使用例子:

DATA conn TYPE dbcon-con_name.cl_demo_input=>request( CHANGING field = conn ).SELECT SINGLE @abap_true      FROM dbcon      WHERE con_name = @conn      INTO @DATA(dbtype).IF sy-subrc <> 0. cl_demo_output=>display( 'Connection not in DBCON' ). RETURN.ENDIF.DELETE FROM demo_update CONNECTION (conn).INSERT demo_update CONNECTION (conn)FROM @( VALUE #( id = 'X'  col1 = 1 col2 = 2 col3 = 3 col4 = 4 ) ).COMMIT CONNECTION (conn).

实际项目案例:

某全球服装集团将门店销售明细实时落盘至 HANA 主库,同时用二级连接将关键字段异步写入 Oracle 数据仓库,用于 BI 分析,避免在核心 OLTP 库创建体量巨大的报表索引。

服务连接 (Service Connection)

命名规则:R/3* 前缀 + 1~26 位自定义名,完全区分大小写。

特性:始终指向标准数据库,但事务隔离于标准连接;便于手动控制日志、锁和提交粒度。

潜在风险:若同一行数据库记录,被标准连接与服务连接同时修改且忘记显式 COMMIT, 会造成「单进程死锁」。还好此类错误可以通过早期代码审查来发现。

服务连接的使用例子:

DELETE FROM demo_update CONNECTION R/3*service_conn.INSERT demo_update CONNECTION R/3*service_connFROM @( VALUE #( id = 'X'  col1 = 1 col2 = 2 col3 = 3 col4 = 4 ) ).COMMIT CONNECTION R/3*service_conn.

下一篇文章,继续介绍 ABAP 这三种数据库连接的生命周期管理,上限与监控,以及在下列四大技术栈中的使用差异。

Open SQL

ADBC

Native SQL

AMDP

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OPUoLXnI24fllMu-YlNEZjEw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券