我可以通过 BizTalk DRDA 服务从 Mainframe Cobol 程序访问 SQL Server 和 DB2 上的表吗?

Posted

技术标签:

【中文标题】我可以通过 BizTalk DRDA 服务从 Mainframe Cobol 程序访问 SQL Server 和 DB2 上的表吗?【英文标题】:Can I access tables on SQL Server and DB2 from Mainframe Cobol Programs via BizTalk DRDA Services? 【发布时间】:2019-03-28 03:44:44 【问题描述】:

我们有 Mainframe z/OS COBOL 应用程序在 SELECT 查询中从少数应用程序(App1、App2)访问一组 DB2 表(T1、T2)。现在,我们将其中一个应用程序 (App1) 及其表 (T1) 移动到 SQL Server(未来的 Azure SQL)。我们如何在不影响 Mainframe COBOL 应用程序的情况下移动此应用程序?

我们能否使用 BizTalk Host Integration Server DRDA 服务从 SQL Server 公开表 T1 和从 DB2 公开表 T2,并允许 Mainframe COBOL 应用程序继续连接表并运行 SELECT 查询?换句话说,Mainframe COBOL 甚至都不知道表 T1 不在 DB2 中而是在 SQL Server 中? 微软的以下链接说可行,但想了解可行性和优缺点。

IBM DRDA - https://en.wikipedia.org/wiki/DRDA, https://www.ibm.com/support/knowledgecenter/en/SSGU8G_11.70.0/com.ibm.admin.doc/ids_admin_0206.htm 为 z-OS 配置 DB2 - https://docs.microsoft.com/en-us/host-integration-server/core/configuring-db2-for-z-os BizTalk 中可用的 DRDA 服务 - https://docs.microsoft.com/en-us/host-integration-server/core/service-for-drda

【问题讨论】:

即使可行,也可能不是一个好主意。您需要了解该表在大型机上的如何多久使用。然后与 DBA 交谈。如果表在 Cics 事务中每天使用 10000 次,那将是一个非常糟糕的主意。 该表每小时将被使用几十万次,每天数百万次。但它不能通过 CICS 访问。大型机 COBOL 程序直接访问表。 我将与 DBA 交谈;我猜你需要复制表格。 【参考方案1】:

我想在这里冒险,但我认为答案是否定的。 z/OS COBOL 程序通过跨内存服务使用线程访问本地 DB2 子系统的 DB2。把它想象成一个套接字,但使用低级零拷贝进程间通信完成。要执行您需要的操作,您需要更改应用程序并混合使用 Java 以集成到 BizTalk。

【讨论】:

【参考方案2】:

您可以定义一个 DRDA 链接到一个 OCDB 数据库链接,该链接应该允许您连接到另一台服务器上的几乎任何标准 SQL 数据库。但是您可能无法通过大型机系统管理员,因为它是非标准的 并且难以管理。

复制可能是您最好的选择 -- 两家供应商都有几种工具:https://docs.microsoft.com/en-us/sql/relational-databases/replication/non-sql/ibm-db2-subscribers?view=sql-server-2017 描述了 Microsoft 产品。

【讨论】:

以上是关于我可以通过 BizTalk DRDA 服务从 Mainframe Cobol 程序访问 SQL Server 和 DB2 上的表吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 BizTalk WCF-WebHttp 适配器向 Mule 服务发布消息时出错:服务不支持内容类型应用程序/json

使用现有 wsdl 创建 BizTalk WCF 终结点

BizTalk 服务器问题

BizTalk - JSON Post WebService 导致 500 内部服务器错误

通过 BizTalk 编排调用 .Net 类的错误

BizTalk SOAP 接收位置性能不佳