为 z-OS 配置 DB2
IBM DB2 for z/OS 支持使用存储在 DB2 for z/OS 通信数据库 (CDB) (目录表集合)中存储的信息访问远程 DRDA 应用程序服务器。
表 | 说明 |
---|---|
SYSIBM。位置 | 定义远程关系数据库所需的目录表,包括地址 (TCP/IP 端口) 、安全性和命名约定 (别名) 。 |
SYSIBM。IPNAMES | 用于定义地址 (TCP/IP 地址或别名) 和安全 (身份验证和加密) 所需的目录表。 |
SYSIBM。IPLIST | 可选目录表,用于在使用故障转移时定义地址 (TCP/IP 地址或别名) 。 |
SYSIBM。用户名 | 用于定义身份验证映射的可选目录表。 |
DB2 for z/OS 通信数据库表。
可以使用动态 SQL 语句(本地 (例如 DB2 管理员、QMF、SPUFI) )或远程 ((例如具有 SQL Server Management Studio) 的 Microsoft Data Provider for DB2)更新 CDB 表。
DB2 for z/OS 通信数据库表。
SQL Server Management Studio
将DB2 的 Microsoft OLE DB 提供程序与 SQL Server Management Studio 和分布式查询处理器 (DQP) 链接服务器配合使用,可以将 DB2 for z/OS 配置数据库 (CDB) 配置为通过 TCP/IP 网络连接与 DRDA 服务启用 DRDA 连接。
在“开始”菜单上,选择“Microsoft Server Tools 18”,然后选择“SQL Server Management Studio 18”。
在“ 连接到服务器 ”对话框中,输入 服务器名称 (例如 LOCALHOST) 。 选择 “身份验证模式” ,输入 “登录名” 和 “密码”。 然后选择“连接” 。
在“Microsoft SQL Server Management Studio”菜单中,选择“新建查询”。
将以下示例复制并粘贴到查询编辑器窗口中的 SQLQuery1.sql 文件中,然后修改突出显示的黄色粗体文本,以匹配 DB2 实例、DRDA 服务和 SQL Server 数据库的值。
SQL Server链接服务器名称
这些系统存储过程定义用于连接到 DB2 for z/OS 的SQL Server链接服务器名称。 (可选)或者,如果没有权限,可以要求 DB2 管理员更新 DB2 连接数据库表。
-- ----------------------------------
-- Microsoft Service for DRDA Example
-- ----------------------------------
-- Drop existing linked server by name
EXEC sp_dropserver
@server = 'DRDA_AS_Example',
@droplogins = 'droplogins';
-- Add linked server for use with Microsoft OLE DB Provider for DB2 (DB2OLEDB)
EXEC sp_addlinkedserver
@server = 'DRDA_AS_Example',
@srvproduct = 'Microsoft OLE DB Provider for DB2',
@provider = 'DB2OLEDB',
@catalog = 'DSN1D037',
@provstr ='Provider=DB2OLEDB;Initial Catalog=DSN1D037;Network Transport Library=TCPIP;Host CCSID=37;PC Code Page=1252;Network Address=SYS1;Network Port=446;Package Collection=HISDEMO;Default Schema=HISDEMO;Default Qualifier=HISDEMO;DBMS Platform=DB2/NT'
-- Add linked server login by specifying valid DB2 user identifer and password
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'DRDA_AS_Example',
@rmtuser = 'HISDEMO',
@rmtpassword = 'HISDEMO';
-- List linked servers
EXEC sp_linkedservers;
-- Specify linked server option to support Remote Procedure Call (to allow execution of DB2 stored procedures)
EXEC sp_serveroption
@server = 'DRDA_AS_Example',
@optname = 'RPC OUT',
@optvalue = 'TRUE' ;
-- List linked servers options
EXEC sp_helpserver;
使用 SQL Server Management Studio 定义SQL Server链接服务器。
正在更新 SYSIBM。LOCATIONS 表
这些系统存储过程定义SQL Server Pass-Thru查询,用于在 DB2 for z/OS 连接数据库中定义 LOCATION。
DB2 for z/OS | 说明 |
---|---|
LOCATION | 指定一个与目标名称匹配的值,SQL Server数据库名称 (例如 NWIND) 。 如果无法指定与目标SQL Server数据库 (匹配的 LOCATION 名称值,例如 LOCATION 名称正在使用中;SQL Server数据库名称) 太长,请使用 DBALIAS 和 drdaDatabaseAliases) (MsDrdaService.exe.config 条目来指示 DRDA 服务如何解释 LOCATION 和 DBALIAS 并将其映射到相应的SQL Server数据库名称。 LOCATION 称为 DRDA RDBNAME (关系数据库名称) 。 LOCATION 称为SQL Server数据库名称或初始目录。 |
LINKNAME | 此值用于关联 SYSIBM 中的记录。SYSIBM 中记录的 LOCATIONS 表。IPNAMES、SYSIBM。IPLIST 和 SYSIBM。USERNAMES 表。 在兼容模式下运行 DB2 for z/OS 时,此值限制为 8 个字符。 |
IBMREQD | 指定“N”。 |
端口 | 指定 TCP/IP 端口的值,供SQL Server计算机上运行的 DRDA 服务使用。 例如,默认 DRDA 端口号为 446。 |
Tpn | 指定“”。 DRDA 服务不支持 (事务程序名称) 备用 TPN。 |
DBALIAS | 如果无法在 LOCATION 字段中指定此值,请指定一个与目标名称SQL Server数据库名称 (匹配的值,例如 NWIND) 。 使用 DBALIAS 时,必须利用 drdaDatabaseAliases) (MsDrdaService.exe.config 条目来指示 DRDA 服务如何解释 LOCATION 和 DBALIAS 并将其映射到相应的SQL Server数据库名称。 |
信任 | 指定“N”。 DRDA 服务不支持受信任的连接。 |
安全 | 使用安全套接字第 4.0 层或传输层安全性 1.0 连接到 DRDA 服务时,请指定“Y”。 |
DB2 for z/OS 连接数据库 SYSIBM。LOCATION 表。
-- --------------------------------------------------
-- Distributed Relational Database Entries
-- --------------------------------------------------
--SYSIBM.LOCATIONS
--LOCATION VARCHAR(128) NOT NULL
--LINKNAME VARCHAR(24) NOT NULL
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
--PORT VARCHAR(96) NOT NULL WITH DEFAULT '446'
--TPN VARCHAR(192) NOT NULL WITH DEFAULT X’07F6C4C2’
--DBALIAS VARCHAR(128) NOT NULL
--TRUSTED CHAR(1) NOT NULL WITH DEFAULT 'N'
--SECURE CHAR(1) NOT NULL WITH DEFAULT 'N'
EXECUTE ('
DELETE FROM SYSIBM.LOCATIONS WHERE LINKNAME = ''HISDRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.LOCATIONS VALUES (''CONTOSO'', ''HISDRDA1'', ''N'', ''446'', '''', '''', ''N'', ''N'')
') AT DRDA_AS_Example;
GO
SYSIBM。DB2 中用于一个 DRDA 服务 (“HISDRDA1”) 的 LOCATIONS 条目。
正在更新 SYSIBM。IPNAMES 表
这些系统存储过程更新 SYSIBM。DB2 for z/OS 上的 IPNAMES 表。
DB2 for z/OS | 说明 |
---|---|
LINKNAME | 此值用于关联 SYSIBM 中的记录。SYSIBM 中记录的 IPNAMES 表。LOCATIONS,SYSIBM。IPLIST 和 SYSIBM。USERNAMES 表。 |
SECURITY_OUT | 指定“A”以发送授权标识符。 (可选)指定“D”以发送加密的授权标识符。 (可选)指定“E”以发送加密的授权标识符和加密数据。 (可选)指定“P”以发送加密的授权标识符、加密密码和加密数据。 不要指定“R”。 DRDA 服务不支持 RACF Pass 票证。 |
用户名 | 指定“”以发送与正在运行的任务或程序登录的用户关联的授权标识符。 (可选)指定“O”以使用 SYSIBM 转换出站授权标识符。用户名。 不要指定“S”。 DRDA 服务不支持受信任的连接。 |
IBMREQD | 指定“N”。 |
IPADDR | 为运行 DRDA 服务的计算机的 TCP/IP 地址或别名指定值。 (可选)在配置依赖于 SYSIBM 中的 IPADDR 条目的容错故障转移时,将此字段留空。IPLIST 表。 |
DB2 for z/OS 连接数据库 SYSIBM。IPNAMES 表。
--SYSIBM.IPNAMES
--LINKNAME VARCHAR(24) NOT NULL
--SECURITY_OUT CHAR(1) NOT NULL WITH DEFAULT 'A'
---A=Already Verified
---D=Data Encrypt
---E=Auth Encrypt
---P=Password with Authorization ID
---R=RACF PassTicket
--USERNAMES CHAR(1) NOT NULL WITH DEFAULT
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
--IPADDR VARCHAR(254) NOT NULL WITH DEFAULT
EXECUTE ('
DELETE FROM SYSIBM.IPNAMES WHERE LINKNAME = ''HISDRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.IPNAMES VALUES (''HISDRDA1'', ''P'', ''O'', ''N'', ''123.34.45.56'')
') AT DRDA_AS_Example;
GO
SYSIBM。DB2 中用于一个 DRDA 服务 (“HISDRDA1”) 的 IPNAMES 条目。
正在更新 SYSIBM。IPLIST 表
这些系统存储过程更新 SYSIBM。DB2 for z/OS 上的 IPLIST 表。 IPLIST 表允许在将 DRDA 服务与服务器列表 (SRVLST) 用于容错故障转移时,为给定 LOCATION 指定多个 IP 地址。
DB2 for z/OS | 说明 |
---|---|
LINKNAME | 此值用于关联 SYSIBM 中的记录。SYSIBM 中记录的 IPNAMES 表。LOCATIONS,SYSIBM。IPLIST 和 SYSIBM。USERNAMES 表。 |
IPADDR | 为运行 DRDA 服务的一组计算机指定每个 TCP/IP 地址或别名的值,以提供容错故障转移。 |
IBMREQD | 指定“N”。 |
DB2 for z/OS 连接数据库 SYSIBM。IPNAMES 表。
--SYSIBM.IPLIST
--LINKNAME VARCHAR(24) NOT NULL
--IPADDR VARCHAR(254) NOT NULL WITH DEFAULT
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
EXECUTE ('
DELETE FROM SYSIBM.IPLIST WHERE LINKNAME = ''HISDRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.IPLIST VALUES (''HISDRDA1'', ''123.34.45.56'', ''N'')
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.IPLIST VALUES (''HISDRDA1'', ''123.34.45.57'', ''N'')
') AT DRDA_AS_Example;
GO
SYSIBM。用于连接到两个 DRDA 服务的 IPLIST 条目 (“HISDRDA1”和“HISDRDA2”) 。
正在更新 SYSIBM。USERNAMES 表
这些系统存储过程更新 SYSIBM。DB2 for z/OS 上的 USERNAMES 表。
DB2 for z/OS | 说明 |
---|---|
TYPE | 指定“O”以转换出站授权标识符。 不要指定“I”。 DRDA 服务不支持作为 DRDA 应用程序请求者客户端进行操作。 不要指定“S”。 DRDA 服务不支持受信任的连接。 |
AUTHID | 指定要转换的授权标识符。 |
LINKNAME | 此值用于关联 SYSIBM 中的记录。SYSIBM 中记录的 IPNAMES 表。LOCATIONS,SYSIBM。IPLIST 和 SYSIBM。USERNAMES 表。 |
NEWAUTHID | 指定授权标识符的已翻译值。 |
PASSWORD | 指定密码。 |
IBMREQD | 指定“N”。 |
DB2 for z/OS 连接数据库 SYSIBM。USERNAMES 表。
--SYSIBM.USERNAMES
--TYPE CHAR(1) NOT NULL
---I=Inbound transalation
---O=Outbound translation
---S=Outbound AUTHID trusted connection
--AUTHID VARCHAR(128) NOT NULL WITH DEFAULT
--LINKNAME VARCHAR(24) NOT NULL
--NEWAUTHID VARCHAR(128) NOT NULL WITH DEFAULT
--PASSWORD VARCHAR(24) NOT NULL
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
EXECUTE ('
DELETE FROM SYSIBM.USERNAMES WHERE LINKNAME = ''HISDRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.USERNAMES VALUES (''O'', ''DBUSRID'', ''HISDRDA1'', '''', ''DBUSRPWD'', ''N'')
') AT DRDA_AS_Example;
GO
EXECUTE ('
SELECT * FROM SYSIBM.LOCATIONS
') AT DRDA_AS_Example;
EXECUTE ('
SELECT * FROM SYSIBM.IPNAMES
') AT DRDA_AS_Example;
EXECUTE ('
SELECT * FROM SYSIBM.USERNAMES
') AT DRDA_AS_Example;
GO
SYSIBM。DB2 中一个 DRDA 服务 (“HISDRDA1”) 的 USERNAME 条目。
DRDA Connections
DRDA AR(包括 IBM DB2 for z/OS)提供多种方法来定义远程 DRDA 连接-网络地址、端口和身份验证。 例如,IBM DB2 for z/OS 依赖于 CDB (连接数据库) 由一组 SYSIBM.* 表 (LOCATIONS、IPNAMES、USERNAMES) 组成。
此外,IBM DB2 for z/OS 支持多种方法启动到远程系统的 DRDA 连接。 本地附加到 DB2 for z/OS 的 COBOL for TSO 程序可以使用基于 SQL CONNECT 语句的 () 显式连接或通过 DRDA 服务连接到SQL Server,或者 (b) 基于 SQL 3 部分对象标识符 (CATALOG 的隐式连接。模式。表) 。
图 1. DRDA 定向数据访问支持隐式连接和显式连接。
Connect 语句
一种常见技术是使用 SQL CONNECT 语句,使用预配置的身份验证、内联身份验证凭据或映射凭据创建从本地 DRDA AR 到远程 DRDA AS 的显式连接。
CONNECT TO CONTOSO; SELECT * FROM DSN8910.DEPT
或
CONNECT TO :LOC USER :USERID USING :PASSWORD; SELECT * FROM DSN8910.DEPT
SQL CONNECT 语句。
由三部分构成的对象标识符
另一种常见技术是在 SQL 语句中使用由 3 部分构成的对象标识符来创建从本地 DRDA AR 到远程 DRDA AS 的隐式连接。
CONNECT TO :LOC USER :USERID USING :PASSWORD; SELECT * FROM DSN8910.DEPT
在 SQL 语句中使用由 3 部分构成的对象标识符。
由三部分构成的对象标识符的别名
(可选)可以将由 3 部分组成的名称封装在由 2 部分构成的本地表别名中。 若要定义用于 DB2 for z/OS 和远程 DRDA 服务器的别名,必须遵循以下步骤。
在本地 DB2 for z/OS 数据库中定义别名。
CREATE ALIAS DSN8910. FOR RDB1.COL1.TABLE1
在远程SQL Server数据库中定义相应的同义词或视图。
CREATE SYNONYM [DSN8910].[ADEPT] FOR [DSN8910].[DEPT] CREATE VIEW [DSN8910].[VDEPT] ("DEPTNO", "DEPTNAME", "MGRNO", "ADMRDEPT") AS SELECT ALL DEPTNO , DEPTNAME, MGRNO , ADMRDEPT FROM DSN8910.DEPT
在 SQL 语句中引用本地 DB2 for z/OS 别名。
SELECT * FROM CONTOSO.DSN8910.ADEPT SELECT * FROM CONTOSO.DSN8910.VDEPT
在 SQL 语句中定义和使用 DB2 for z/OS 别名,该别名由 3 部分构成的对象标识符。
使用 QMF 验证 DB2 for z/OS 到 DRDA 服务的连接
可以使用 QMF 和许多其他驻留主机的 DB2 客户端程序验证 DB2 for z/OS 到 DRDA 服务的连接。
在“开始”菜单上,依次指向“所有程序”、“Microsoft Host Integration Server 2010”、“工具”和“3270 客户端”。
在 “Host Integration Server 3270 Client (3270 Client) ”窗口中,单击“ 会话 ”菜单,然后单击“ 会话配置”。
在“3270 设置”对话框中,选择“TN3270E服务器连接”,在“服务器名称”编辑框中键入“SYS1”,然后单击“确定”。
在 “会话 ”菜单上,单击“ 连接”。 3270 客户端将显示 SSCP 屏幕。 在光标 (左下角) ,键入 TSO HISDEMO,然后按 Enter。
在 TSO/E LOGON 屏幕上,在光标处 (密码 字段) ,输入 HISDEMO,然后按 Enter。
在 “欢迎” 屏幕上,按 Enter 检索其余屏幕数据。 在 READY 提示符下键入 ISPF,然后按 Enter。
在 “ISPF 主选项菜单” 屏幕上,按 Enter 清除 IBM 许可证文本。 在光标 (Option) ,键入 U,然后按 Enter。
在 “用户选项选择菜单” 屏幕上,在光标 (SELECT OPTION) ,键入 B,然后按 Enter。
在 “DB2I 主选项菜单” 屏幕上,在光标 (COMMAND) 键入 Q,然后按 Enter。
在 QMF 主面板 屏幕上,在光标 (COMMAND) 按 F6。
在 “SQL 查询” 屏幕的光标 (COMMAND) ,按 Tab,然后再次按 Tab 。 在 游标 (SQL QUERY 屏幕标签) 下方的两行处,键入 SELECT * FROM NWIND。Dbo。客户,然后按 F2。
在 “报表” 屏幕上,查看查询的结果。 (可选)按 F8 向前滚动,然后按 F11 向右滚动。 按 F6 返回到 SQL 查询 屏幕。 按 F3 返回到 QMF 主面板 屏幕。
DB2 for z/OS 绑定复制静态 SQL 包
可以将静态 SQL 包从 DB2 for z/OS 绑定到 DRDA AS,用于定义静态 SQL 包 XML 文件,以便以后创建相应的SQL Server存储过程。 可以使用 3270 终端仿真程序从 DB2 绑定包实用工具或 DB2 管理实用工具运行 DB2 for z/OS 绑定复制命令。
DB2 绑定包实用工具
在“开始”菜单上,依次指向“所有程序”、“Microsoft Host Integration Server 2010”、“工具”和“3270 客户端”。
在 “Host Integration Server 3270 Client (3270 Client) ”窗口中,单击“ 会话 ”菜单,然后单击“ 会话配置”。
在“3270 设置”对话框中,选择“TN3270E服务器连接”,在“服务器名称”编辑框中键入“SYS1”,然后单击“确定”。
在 “会话 ”菜单上,单击“ 连接”。 3270 客户端将显示 SSCP 屏幕。 在光标 (左下角) ,键入 TSO HISDEMO,然后按 Enter。
在 TSO/E LOGON 屏幕上,在光标处 (密码 字段) ,输入 HISDEMO,然后按 Enter。
在 “欢迎” 屏幕上,按 Enter 检索其余屏幕数据。 在 READY 提示符下键入 ISPF,然后按 Enter。
在 “ISPF 主选项菜单” 屏幕上,按 Enter 清除 IBM 许可证文本。 在光标 (Option) ,键入 U,然后按 Enter。
在 “用户选项选择菜单” 屏幕上,在光标 (SELECT OPTION) ,键入 B,然后按 Enter。
在 “DB2I 主选项菜单” 屏幕上,在光标 (COMMAND) ,键入 D,然后按 Enter。
在 DB2I DEFAULTS PANEL 1 屏幕上,在光标 (COMMAND) ,按 Tab 两次将光标置于 DB2 NAME 字段上,键入 DSN1,然后按 Enter。
在 DB2I DEFAULTS PANEL 2 屏幕上,在光标 (COMMAND) 按 Enter。
在 “DB2I 主选项菜单” 屏幕上,在光标 (命令) ,键入 5,然后按 Enter。
在 BIND/REBIND/FREE 屏幕上,在光标处 (COMMAND) 键入 4,然后按 Enter。
在 “绑定包” 屏幕上,在“ 位置名称 ”字段中键入“HISDRDA1”,然后按 Tab。在 “集合 ID ”字段中,键入“DBO”,然后按 Tab。在 “DBRD 或”COPY“选项字段中,键入 COPY,然后按 Tab。在 “集合 ID ”字段中,键入“DBO”,然后按 Tab。在 “PACKAGE-ID ”字段中,键入“PKGAREAS”,然后按 Tab 在 “ACTION ON PACKAGE ”字段中找到光标。 在 “ACTION ON PACKAGE ”字段中,键入“ADD”,然后按 Enter。
DB2 管理员 绑定复制包
在“开始”菜单上,依次指向“所有程序”、“Microsoft Host Integration Server 2010”、“工具”和“3270 客户端”。
在 “Host Integration Server 3270 Client (3270 Client) ”窗口中,单击“ 会话 ”菜单,然后单击“ 会话配置”。
在“3270 设置”对话框中,选择“TN3270E服务器连接”,在“服务器名称”编辑框中键入“SYS1”,然后单击“确定”。
在 “会话 ”菜单上,单击“ 连接”。 3270 客户端将显示 SSCP 屏幕。 在光标 (左下角) ,键入 TSO HISDEMO,然后按 Enter。
在 TSO/E LOGON 屏幕上,在光标处 (密码 字段) ,输入 HISDEMO,然后按 Enter。
在 “欢迎” 屏幕上,按 Enter 检索其余屏幕数据。 在 READY 提示符下键入 ISPF,然后按 Enter。
在 “ISPF 主选项菜单” 屏幕上,按 Enter 清除 IBM 许可证文本。 在光标 (Option) 键入 M,然后按 Enter。
在 “用户选项选择菜单” 屏幕上,在光标 (SELECT OPTION) ,键入 B,然后按 Enter。
在 “IBM 产品面板” 屏幕上,在光标 (Option) 键入 3,然后按 Enter。
在“DB2 管理员 – Active DB2 Systems”屏幕上,在光标 (DB2 系统名称) ,键入 DSN1,然后按 Enter。
在“DB2 管理员 – DB2 管理菜单”屏幕上,按 Enter 清除 IBM 许可证文本。 在光标 (Option) 键入 1,然后按 Enter。
在“DB2 管理员 – DSN1 系统目录”屏幕上,在光标 (Option) 键入 K,然后按 Enter。
在“DB2 管理员 – DSN1 包”屏幕上,在光标 (Option) ,重复按 F8 以向前滚动浏览列表,直到看到源集合和包名称。 (可选)按 F7 滚动到列表中的上一项。 在与源集合和包名称对应的行上,在列 S 下键入 BC,然后按 Enter。
在“DB2 管理员 – DSN1 绑定复制包”屏幕上,在光标 (命令) ,按 Tab 将光标置于“位置”字段中,键入目标位置名称 (例如“HISDRDA1”) 。 按 Tab 将光标置于 “集合 ”字段中,键入目标架构名称 (例如“DBO”) ,然后按 Enter。