使用 Microsoft DRDA 服务规划和构建解决方案

以下部分提供有关使用 Microsoft DRDA 服务(DRDA 服务)规划和构建解决方案的帮助。

规划

企业 IT 组织需要交付新的解决方案,同时提高开发人员的效率并降低成本。 DRDA 服务提供的技术和工具使得 IT 专业人员和企业开发人员能够基于 Microsoft SQL Server 部署新的解决方案,同时可以基于 IBM DB2 连接现有工作负载。 下图提供了用于将 IBM DB2 客户端连接到 Microsoft SQL Server 数据库的 DRDA 服务解决方案中所涉及的技术和组件的概要体系结构。

HIS DRDA Planning

以上插图显示了有关通过 DB2 for z/OS 和 DRDA 服务将 IBM CICS for z/OS 客户端程序连接到远程 Microsoft SQL Server 数据库的计划。

Microsoft Service for DRDA (分布式关系数据库体系结构) 是一种 Application Server (AS) ,使 DRDA 应用程序请求者 (AR) 客户端(如 IBM DB2 for z/OS 和 DB2 for IBM i)执行映射到SQL Server存储过程的静态 SQL 语句。 DRDA 服务提供主机发起的数据集成,在分阶段的工作负载迁移期间,或者对于用来为远程批处理或商业智能解决方案提供支持的日常操作,这种集成对企业而言是不可或缺的。

DRDA 服务提供以下功能。

  • 通过 TCP/IP 网络连接从 DRDA 客户端访问 SQL Server。

  • 安全身份验证和数据加密。

  • 分布式两阶段提交事务。

  • 映射到 SQL Server 存储过程调用的 SQL 静态语句。

  • 映射到 T-SQL命令的受限动态数据操作语言命令。

  • 数据类型映射和转换、字符串编码以及日期时间格式设置。

  • 错误代码和文本到 DRDA 回复消息的映射,以及格式化错误对象。

  • 用于记录流和命令的跟踪实用工具可实现排除问题。

分布式关系数据库体系结构

IBM DB2 客户端和服务器使用分布式关系数据库体系结构 (DRDA) 协议和格式进行通信。 DRDA 服务充当 DRDA 应用程序服务器 (AS),使 DRDA 应用程序请求方 (AR) 客户端能够与 Microsoft SQL Server 数据库交互。 DRDA 服务支持 The Open Group (http://www.opengroup.org) 发布的体系结构参考中定义的有限一组 DRDA 代码点。

  • DRDA 版本 5 第 1 卷:分布式关系数据库体系结构 (DRDA)

  • DRDA 版本 5 第 2 卷:格式化数据对象内容体系结构 (FD:OCA)

  • DRDA 版本 5 第 3 卷:分布式数据管理 (DDM) 体系结构

    可以从开放组书店下载 DRDA V5 第 3 卷:分布式数据管理体系结构,出版物编号 C114, (https://go.microsoft.com/fwlink/?LinkID=219127&clcid=0x409) 。

IBM DB2 服务器和客户端

Microsoft、IBM 和第三方供应商在各种 DRDA 应用程序请求方 (AR) 客户端技术中实现 DRDA 协议和格式。 DRDA 服务支持符合 DRDA 版本 5 标准的 DRDA AR 客户端发起的入站连接,这些客户端包括以下 IBM 和 Microsoft 产品中打包的 DRDA AR。

  • IBM DB2 for z/OS 12 和 11

  • IBM DB2 for IBM i 7.4、7.3 和 7.2

  • IBM DB2 for LUW 11.5、11 和 10.5

    Microsoft Host Integration Server 包括两个 DRDA 应用程序请求程序客户端,一个用于连接到远程 IBM DB2 数据库服务器,一个用于连接到远程 IBM Informix 数据库服务器。 这些 DRDA AR 支持 DRDA 版本 5.0 的子集。 适用于 DB2 的 Microsoft 客户端支持以下适用于 DB2 的数据提供程序:

  • 适用于 DB2 的 Microsoft ODBC 驱动程序

  • Microsoft OLE DB Provider for DB2

  • 适用于 DB2 的 Microsoft ADO.NET Framework 数据提供程序

  • 适用于 DB2 的 Microsoft BizTalk 适配器

    DRDA 服务为 Microsoft DRDA 客户端和 IBM DRDA 客户端提供基本的 DRDA 支持。

企业单一登录

DRDA 服务依赖于使用 Microsoft 企业单一登录将入站主机凭据(例如 RACF 用户授权标识符)映射到出站 Windows Active Directory (AD) 凭据,使 DRDA 服务能够通过“集成安全性”连接到 SQL Server。

单一登录

以上插图显示了在启用企业单一登录的情况下,DRDA 服务如何将入站 DRDA 凭据映射到出站 SQL Server 凭据。

主机发起的 ESSO 需要在 Active Directory 中拥有提升的权限(Kerberos 约束委派,使用任何身份验证协议)。 ESSO 需要 DRDA 服务连接到的 SQL Server 计算机的 Kerberos 服务主体名称。 .

Microsoft SQL Server

企业管理员和开发人员依赖于使用 Microsoft SQL Server 为业务线应用程序构建任务关键型数据平台。 SQL Server 可帮助企业通过在整个组织中进行数据发现来解锁新的见解,同时为工具提供一致的数据,以及大规模分析和数据仓库功能。 DRDA 服务可以基于 Microsoft SQL Server 将现有的 IBM 主机工作负载连接到新解决方案,以实现异构的企业应用程序和商业智能。

DRDA 服务依赖于使用 Microsoft SQL Server 网络客户端和适用于 SQL Server 的 ADO.NET Framework 数据提供程序建立连接,以及对 SQL Server 数据库进行数据访问。 有关 Microsoft SQL Server 的详细信息,请参阅 http://www.microsoft.com/sql

体系结构

DRDA 服务提供基于行业标准 DRDA(分布式关系数据库体系结构)的兼容性服务,而 DRDA 以一组协议代码点和格式的形式定义了 DB2 客户端到服务器的通信,因此,使用 DRDA 服务可以从远程 IBM DB2 客户端程序和本地 Microsoft SQL Server 数据库建立连接。 DRDA 服务在 DRDA 中作为应用程序服务器 (AS) 运行。 IBM DB2 客户端程序(例如 COBOL TOS 和 CICS for z/OS)在本地附加到 DB2 for z/OS,并在 DRDA 中作为应用程序请求方 (AS) 客户端运行。 DRDA 服务是托管 Microsoft .NET Framework 实例的 Windows 服务程序,使用适用于 SQL Server 的 Microsoft ADO.NET Framework 数据提供程序和基础 Microsoft SQL Server 网络客户端连接到本地或远程 Microsoft SQL Server。

DRDA 服务解决方案

以上插图显示了一个将 IBM DB2 for z/OS 连接到 Microsoft SQL Server 的 DRDA 服务解决方案。

连接

分布式关系数据库体系结构

DRDA 服务将 DRDA 代码点和数据格式转换为相应的 Microsoft ADO.NET 连接、事务、命令、数据类型和错误对象。 DRDA 服务的主要作用是在功能上将用于 DB2 包的静态 SQL 和语句执行映射到 Microsoft SQL Server 存储过程和 CALL 语句。 DRDA 服务基于各种 DRDA 管理器来处理体系结构中定义的 DRDA 协议流。

网络传输和事务

DRDA 服务支持 TCP/IP 网络上经过身份验证的入站 DRDA 客户端连接。 DRDA 服务不支持使用 HPR/IP(基于 Internet 协议的高性能路由)进行基于 LU6.2 的 SNA APPC。 若要连接到 SQL Server,DRDA 服务需使用支持内存中连接、命名管道连接和 TCP/IP 网络连接的适用于 SQL Server 的 Microsoft ADO.NET 提供程序基础程序和 SQL 网络客户端。

默认情况下,DRDA 服务将在默认 DRDA 端口 446 上侦听入站连接,并接受任何 DRDA 客户端连接请求。 DRDA 服务可以选择性地在另一个预配置的端口号上侦听。 此外,为了提高安全性,可将 DRDA 服务配置为接受来自预定义的远程网络地址列表的入站连接请求。

为了通过网络实现可靠更新,DRDA 服务支持 DRDA DUW(分布式工作单元)两阶段提交事务。 DRDA DUW 事务通过适用于 SQL Server 的 Microsoft ADO.NET Framework 数据提供程序和基础 SQL 网络客户端映射到 SQL Server 事务。

池和故障转移

DRDA 服务支持通过在 DRDA 服务应用配置中的 SQL Server 连接字符串参数内配置 SQL 客户端池选项,来建立 SQL 客户端连接池。此外,DRDA 服务还提供一个内部连接池,用于将入站 DRDA AR 客户端连接和身份验证凭据映射到出站 SQL Server 数据库连接和凭据。

DRDA 容错故障转移

DRDA 服务主服务器和伙伴服务器配合工作以实现容错故障转移。

DRDA 服务可以在包含两 (2) 个服务器(每台计算机上各有一个服务器)的组中运行,以提供基本容错能力。 当 DRDA AR 客户端连接到 SQL Server 数据库时,DRDA 服务将返回 DRDA SRVLST(服务器列表)以及数据服务器实例的加权列表。 在主 DRDA 服务故障转移的情况下,DRDA AR 可以使用此信息连接到一对 DRDA 服务计算机的备用成员。 与 SQL Server 群集或镜像相结合,此技术可以提供合理程度的容错故障转移保护。

身份验证和加密

为了保护信息,DRDA 服务支持常用的 DRDA 身份验证和数据加密技术。 例如,DRDA 服务可以支持基本身份验证(纯文本 EBCDIC 编码的用户名和密码),也可以支持使用 256 位高级加密标准 (AES) 的安全身份验证。 此外,DRDA 服务还可以支持使用安全套接字层 (SSL) V3.0 或传输层安全性 (TLS) V1.0 的组合式身份验证和加密。

为了提供集成的身份验证,DRDA 服务可以将使用 Microsoft 企业单一登录 (ESSO) 的入站凭据验证和映射与使用 Windows SSPI(安全支持提供程序接口)的出站 SQL Server 身份验证相结合。 例如,DRDA 服务可以与 ESSO 配合使用,以将 IBM RACF(资源访问控制设备)用户名和密码映射到 Microsoft Windows Active Directory 域\用户名,使用此用户名和密码可以通过集成的安全性连接到远程 SQL Server 数据库。

兼容性

静态和动态 SQL

首先,DRDA 服务通过将包语句映射到 SQL Server 存储过程,使 DB2 客户端程序能够执行 用于 DB2 包的远程定义静态 SQL。 例如,当某个 DB2 管理员或程序员绑定将 DB2 包复制到 SQL Server 时,DRDA 服务会将 DRDA BNDSQLSTT(绑定 SQL 语句)转换为 SQL Server T-SQL CREATE PROCEDURE 语句。 当 DB2 程序执行远程包语句时,DRDA 服务会将 DRDA OPNQRY(打开查询)或 EXCSQLSTT(执行 SQL 语句)转换为 CALL 语句。

其次,DRDA 服务支持有限的动态 SQL 操作,使 DB2 客户端程序能够执行远程 SQL Server T-SQL 命令。 例如,DB2 管理员可以利用适用于 z/OS 的 QMF(查询管理工具)来查询远程 SQL Server 表。

SQL 语法

DRDA 服务利用其中随附的一个受限 DB2 ANSI 到 SQL Server T-SQL 命令语法转换器来绑定包以及执行静态和动态 SQL 语句。 DRDA 服务选择性地以基于 SQL Server CLR 的函数形式提供其他兼容的 DB2 函数。

DRDA 服务提供一个可替换的包绑定组件,用于将 DRDA BNDSQLSTT(绑定 SQL 语句)处理成 SQL Server T-SQL CREATE PROCEDURE 语句。 例如,ISV(独立软件供应商)或企业开发人员可以实现自定义的包绑定组件来支持语法、数据类型、编码或其他所需的转换。

目录和架构名称

DRDA 服务提供高级对象标识符(包括目录和架构名称)的基本映射。 例如,DRDA 服务可将入站 DRDA RDBNAM(关系数据库名称)映射到出站 SQL Server 数据库名称。 此外,DRDA 服务可将入站 DRDA COLLID(集合标识符)映射到出站 SQL Server 架构名称。

数据类型转换

为了支持在 Windows 操作系统上运行的SQL Server数据库与 z/OS 和 IBM i 上运行的 DB2 服务器之间的跨平台互操作性,DRDA 服务提供了一组在 XML 文件 (DB2ToMSSql.xml 和 MSSQLToDB2.xml) 中定义的数据类型映射和转换。 例如,DRDA 服务可将入站 DB2 DECIMAL 映射并转换为出站 SQL Server Money。

字符串编码

DRDA 服务支持将 DB2 EBCDIC 字符串编码转换为 SQL Server ANSI 和 UNICODE 编码。 DRDA 服务可以选择性地支持经过修改的且可替换的 Windows EBCDIC 到 UNICODE NLS(国家语言支持)转换文件。 此外,DRDA 服务使用 CCSID(编码字符集标识符)十六进制值对基于预定义的映射提供内联字符替换。

日期时间格式设置

DRDA 服务提供内联 DB2 DATE/TIME/TIMESTAMP 到 SQL Server date/time/datetime2 格式和字符串字面量值的转换。 例如,DRDA 服务可将 YYYY-MM-DD-hh.mm.ss.tttttt 格式的入站 DB2 格式化 TIMESTAMP 字符串字面量值转换为 YYYY-MM-DD hh:mm:ss.tttttt 格式的出站 SQL Server datetime2(6) 值。

管理

在启动 DRDA 服务之前,管理员可以通过修改 MsDrdaService.exe.config 文件以及辅助 XML 文件(数据类型和错误映射)来配置 DRDA 服务。 DRDA 服务选择性地提供即时读取 MsDrdaService.exe.config 的功能,以实现动态配置更新。

Configuration

在安装后,IT 专业人员可以通过编辑 MsDrdaService.exe.config 文件并更新其他 XML 文件来自定义 DRDA 服务配置。 下面是 DRDA 服务组件、可配置项和配置存储的列表。

组件 配置存储
DRDA 服务 服务凭据

安全策略权限

连接管理器

安全管理器

SQL 访问管理器

数据库管理器
Windows 注册表

MsDrdaService.exe.config

MSDRDAErrorMappings.xml
数据转换 数据类型映射

日期、时间、日期时间格式
DB2ToMSSql.xml MSSQLToDB2.xml

MsDrdaService.exe.config
代码页转换 自定义代码页

代码点映射
Windows 注册表

MsDrdaService.exe.config
绑定侦听器 默认侦听器

自定义侦听器
MsDrdaService.exe.config
跟踪侦听器 文本侦听器

控制台侦听器

ETW 侦听器

自定义侦听器
MsDrdaService.exe.config
事件日志 事件 应用程序日志
性能监视器 计数器 Windows 注册表

MsDrdaService.exe.config

上表列出了可配置的 DRDA 服务组件、项和配置存储。

跟踪

DRDA 服务支持使用多个跟踪选项:控制台侦听器跟踪、文本侦听器跟踪、事件日志侦听器跟踪、ETW(适用于 Windows 的事件跟踪)侦听器跟踪和自定义跟踪。 在 Windows 控制台模式下运行 DRDA 服务时,管理员可以使用控制台跟踪将跟踪数据输出到屏幕。 在 Windows 服务模式或控制台模式下运行 DRDA 服务时,管理员可以使用文本跟踪将跟踪数据输出到文本可读的文件。 DRDA 服务会自动将事件日志侦听器跟踪项发布到 Windows 事件日志。 管理员可以使用 ETW 跟踪来高速收集数据。 企业开发人员可以选择性地实现自定义跟踪侦听器,以将所有或选定的跟踪数据输出到另一个组件。

记帐和日志记录

DRDA 服务支持标准的 DRDA 记帐代码点:客户端工作站名称;客户端用户 ID;客户端应用程序名称;客户端记帐。 企业开发人员可在其程序中指定用于填充 DRDA 客户端记帐属性的动态值。 DRDA 服务在运行时将读取这些值以填充 DRDA 服务跟踪,从而可以将问题关联到特定的应用程序和用户上下文。 企业开发人员可以选择性地实现用于记录 DRDA AR 客户端请求的 DRDA 服务客户跟踪侦听器。 例如,客户跟踪侦听器可以基于客户端帐户值将选定的网络和数据库访问记录到远程 SQL Server 日志记录数据库。

错误映射

DRDA 服务以 DRDA 代码点“回复消息”(RM) 或“DRDA SQLCARD”(SQL 通信区域回复数据)的形式返回 SQL Server 错误。 默认情况下,对于常见问题,DRDA 服务会使用一个内置表将 SQL 错误代码和错误字符串映射到 DRDA 回复消息和错误。 此外,DRDA 服务使用外部 MsDrdaErrorMappings.xml 文件将 SQL Server 错误代码和错误文本映射到 SQLCODE、SQLSTATE、原因代码和错误消息。