IBM DB2 for z/OS 支援使用儲存在 DB2 for z/OS Communications Database (CDB) 中的資訊來存取遠端 DRDA 應用程式伺服器,這是目錄數據表的集合。
表 | 說明 |
---|---|
SYSIBM位置 | 定義遠端關係資料庫的必要目錄數據表,包括位址(TCP/IP 埠)、安全性和命名慣例(別名)。 |
SYSIBM。IPNAMES | 定義位址 (TCP/IP 位址或別名) 和安全性 (驗證和加密) 的必要目錄資料表。 |
SYSIBM。IPLIST | 使用故障轉移時,用於定義位址(TCP/IP 位址或別名)的選擇性目錄數據表。 |
SYSIBM。USERNAMES | 定義身份驗證映射的可選目錄表。 |
DB2 for z/OS Communications Database 數據表。
您可以使用動態 SQL 語句,來更新 CDB 數據表,可以是本機(例如:DB2 Admin、QMF、SPUFI)或者遠端(例如:Microsoft Data Provider for DB2 搭配 SQL Server Management Studio)。
DB2 for z/OS Communications Database 數據表。
SQL Server Management Studio
使用 Microsoft OLE DB Provider for DB2 配合 SQL Server Management Studio 及分散式查詢處理器(DQP)鏈接伺服器,您可以設定 DB2 for z/OS 組態資料庫(CDB),以啟用透過 TCP/IP 網路連線到 DRDA 服務的 DRDA 連線。
在 [ 開始] 功能表上,選取 [Microsoft Server Tools 18],然後選取 [SQL Server Management Studio 18]。
在 [ 連接到伺服器 ] 對話框中,輸入 伺服器名稱 (例如 LOCALHOST)。 選取 [驗證 ] 模式,輸入 [登入 ] 和 [ 密碼]。 然後選取 [Connect]。
在 [Microsoft SQL Server Management Studio ] 功能表中,選取 [ 新增查詢]。
將下列範例複製並貼到 [查詢編輯器] 視窗中的SQLQuery1.sql檔案中,然後修改粗體黃色醒目提示文字,以符合 DB2 實例、DRDA 服務和 SQL Server 資料庫的值。
SQL Server 連結伺服器名稱
這些系統預存程式會定義 SQL Server 連結伺服器名稱,以連線到 DB2 for z/OS。 如果您沒有權限,您可以選擇請求 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 連線資料庫中定義位置。
DB2 for z/OS | 說明 |
---|---|
位置 | 指定符合目標 SQL Server 資料庫名稱的值(例如 NWIND)。 如果您無法指定符合目標 SQL Server 資料庫的 LOCATION 名稱值(例如 LOCATION 名稱正在使用中;SQL Server 資料庫名稱太長),然後使用 DBALIAS 和 MsDrdaService.exe.config 專案 (drdaDatabaseAliases) 指示 DRDA 服務如何解譯和對應 LOCATION 和 DBALIAS 至對應的 SQL Server 資料庫名稱。 LOCATION 稱為DRDA RDBNAME (關係資料庫名稱)。 LOCATION 稱為 SQL Server 資料庫名稱或初始目錄。 |
LINKNAME | 這個值用來將 SYSIBM.LOCATIONS 表中的記錄與 SYSIBM.IPNAMES、SYSIBM.IPLIST 和 SYSIBM.USERNAMES 表中的記錄關聯起來。 在相容性模式中執行 z/OS 的 DB2 時,此值限制為 8 個字元。 |
IBMREQD | 指定 「N」。。 |
連接埠 | 指定 TCP/IP 埠的值,以供 SQL Server 計算機上執行的 DRDA 服務使用。 例如,預設DRDA埠號碼為446。 |
TPN | 指定 “”。 DRDA 服務不支援替代 TPN(交易程式名稱)。 |
DBALIAS | 如果您無法在 [位置] 字段中指定此值,請指定符合目標 SQL Server 資料庫名稱 (例如 NWIND) 名稱的值。 使用 DBALIAS 時,您必須利用 MsDrdaService.exe.config 專案 (drdaDatabaseAliases) 指示 DRDA 服務如何解譯和對應 LOCATION 和 DBALIAS 至對應的 SQL Server 資料庫名稱。 |
值得信賴 | 指定 「N」。。 DRDA 服務不支援受信任的連線。 |
安全 | 使用安全套接字層 4.0 或傳輸層安全性 1.0 連線到DRDA服務時,請指定 “Y”。 |
DB2 for z/OS Connection Database 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.LOCATIONS 於 DB2 中的專案條目,屬於一個 DRDA 服務(HISDRDA1)。
更新SYSIBM。IPNAMES 數據表
這些系統預存程式會更新 SYSIBM。DB2 for z/OS 上的 IPNAMES 數據表。
DB2 for z/OS | 說明 |
---|---|
LINKNAME | 這個值用於將 SYSIBM.IPNAMES 資料表中的記錄與 SYSIBM.LOCATIONS、SYSIBM.IPLIST 和 SYSIBM.USERNAMES 資料表中的記錄關聯起來。 |
安全外出 | 指定 「A」 以傳送授權識別碼。 選擇性地指定 「D」 以傳送加密的授權識別碼。 選擇性地指定 「E」 以傳送加密的授權識別碼和加密的數據。 選擇性地指定 「P」 以傳送加密的授權識別碼、加密的密碼和加密的數據。 請勿指定 「R」。。 DRDA 服務不支援 RACF Pass 票證。 |
使用者名稱 | 指定 「以傳送與登入的用戶、執行中工作或程式相關聯的授權標識碼。 可選擇指定「O」以使用 SYSIBM.USERNAMES 轉譯輸出授權識別碼。 請勿指定 「S」。。 DRDA 服務不支援受信任的連線。 |
IBMREQD | 指定 「N」。。 |
IPADDR | 為DRDA服務執行所在的電腦指定 TCP/IP 位址或別名的值。 可選擇性地在配置容錯故障轉移時將此字段保留空白,這依賴於 SYSIBM.IPLIST 表中的 IPADDR 項目。 |
DB2 for z/OS Connection Database 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服務的IPNAMES項目(“HISDRDA1”)。
更新SYSIBM。IPLIST 數據表
這些系統預存程式會更新 DB2 for z/OS 上的 SYSIBM.IPLIST 資料表。 IPLIST 數據表可讓您在搭配伺服器清單 (SRVLST) 使用DRDA服務進行容錯故障轉移時,指定指定位置的多個IP位址。
DB2 for z/OS | 說明 |
---|---|
LINKNAME | 此值用於將 SYSIBM.IPNAMES 資料表中的記錄與 SYSIBM.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 | 說明 |
---|---|
類型 | 指定 「O」 來轉譯輸出授權標識碼。 請勿指定 「I」。。 DRDA 服務不支援以DRDA應用程式要求者用戶端的形式運作。 請勿指定 「S」。。 DRDA 服務不支援受信任的連線。 |
AUTHID | 指定要轉譯的授權標識碼。 |
LINKNAME | 這個值是用於將 SYSIBM.IPNAMES 資料表中的記錄與 SYSIBM.LOCATIONS、SYSIBM.IPLIST 和 SYSIBM.USERNAMES 資料表中的記錄關聯起來。 |
NEWAUTHID | 指定授權識別碼的翻譯值。 |
密碼 | 指定密碼。 |
IBMREQD | 指定 「N」。。 |
DB2 for z/OS Connection Database 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.USERNAMES 在 DB2 中用於一個DRDA服務的項目(「HISDRDA1」)。
DRDA 連線
DRDA AR,包括 IBM DB2 for z/OS,提供各種定義遠端DRDA連線的方法,包括網路位址、埠和驗證。 例如,IBM DB2 for z/OS 依賴由一組 SYS IBM.* 資料表(LOCATIONS、IPNAMES、USERNAMES)組成的 CDB(連接資料庫)。
此外,IBM DB2 for z/OS 也支援多個起始遠端系統 DRDA 連線的方法。 在本機附加至 DB2 for z/OS 的 COBOL 程式,可以透過 DRDA 服務連線到 SQL Server,這可以使用基於 SQL CONNECT 語句的明確連接,或使用基於 SQL 三部分物件識別符(CATALOG.SCHEMA.TABLE)的隱含連接。
圖 1. DRDA 導向數據存取同時支援隱含和明確連線。
連接陳述
常見的技術是使用 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 伺服器搭配使用的別名,必須遵循下列步驟。
在 z/OS 資料庫的本機 DB2 中定義別名。
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 語句中的 3 部分物件識別碼上定義及使用 DB2 for z/OS 別名。
使用 QMF 確認 DB2 for z/OS 到 DRDA 服務的連線
您可以使用 QMF 和許多其他主機常駐 DB2 用戶端程式,來驗證 DB2 for z/OS 到 DRDA 服務連線。
在 [ 開始] 功能表上,指向 [ 所有程式],指向 [Microsoft主機整合伺服器 2010],單擊 [ 工具],然後按兩下 [3270 用戶端]。
在 [ 主機整合伺服器 3270 用戶端 (3270 用戶端 )] 視窗中,按兩下 [ 會話 ] 功能表,然後按兩下 [ 工作話設定]。
在 [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 PRIMARY OPTION MENU 畫面中,在COMMAND游標出處輸入 Q,然後按 Enter。
在 QMF首頁面板 畫面的游標 (COMMAND) 上,按 F6。
在 [SQL QUERY ] 畫面的游標 (COMMAND) 上,按 Tab 鍵,然後按 Tab 鍵再按一次。 在 游標 處(SQL QUERY 畫面標籤下方的兩行),輸入 SELECT * FROM NWIND。DBO。客戶,然後按 F2。
在 [報表] 畫面上,檢視查詢的結果。 或者,按 F8 向前捲動,然後按 F11 向右卷動。 按 F6 傳回 SQL QUERY 畫面。 按 F3 傳回 QMF 首頁面板 畫面。
DB2 for z/OS 綁定複製靜態 SQL 套件
您可以將靜態 SQL 套件從 DB2 for z/OS 系結至 DRDA AS,以定義靜態 SQL 套件 XML 檔案,以便稍後建立對應的 SQL Server 預存程式。 您可以使用 3270 終端機模擬程式,從 DB2 Bind Package Utility 或 DB2 Administration 公用程序執行 DB2 for z/OS Bind Copy 命令。
DB2 綁定套件工具
在 [ 開始] 功能表上,指向 [ 所有程式],指向 [Microsoft主機整合伺服器 2010],單擊 [ 工具],然後按兩下 [3270 用戶端]。
在 [ 主機整合伺服器 3270 用戶端 (3270 用戶端 )] 視窗中,按兩下 [ 會話 ] 功能表,然後按兩下 [ 工作話設定]。
在 [3270 設定] 對話框中,選取 [TN3270E伺服器連線],在 [伺服器名稱] 編輯方塊中輸入 “SYS1”,然後按兩下 [確定]。
在 工作階段 功能表上,按一下 連線。 3270 用戶端會顯示 SSCP 畫面。 在游標(左下角)輸入 TSO HISDEMO,然後按 Enter。
在 TSO/E LOGON 畫面的游標 (密碼 ] 欄位中,輸入 HISDEMO,然後按 Enter。
在 [歡迎使用 ] 畫面上,按 Enter,以擷取其餘畫面數據。 在 READY 提示下方輸入 ISPF,然後按 Enter。
在 [ISPF 主要選項功能表 ] 畫面上,按 Enter 鍵以清除 IBM 授權文字。 在游標 (Option), 輸入 U,然後按 Enter。
在 [ 用戶選項選取功能表 ] 畫面的游標上輸入B,然後按 Enter 鍵。
在 DB2I PRIMARY OPTION MENU 畫面上,於游標 (COMMAND) 上輸入 D,然後按 Enter。
在 DB2I DEFAULTS PANEL 1 畫面的 COMMAND 游標上,按兩次 Tab 鍵,將游標放在 DB2 NAME 字段上,輸入 DSN1,然後按 Enter 鍵。
在 DB2I DEFAULTS PANEL 2 畫面上,於 COMMAND 游標處 按下 Enter 鍵。
在 DB2I PRIMARY OPTION MENU 畫面上,在COMMAND 游標處輸入 5,然後按 Enter。
在 [BIND/REBIND/FREE ] 畫面上,於游標 (COMMAND) 上輸入 4,然後按 Enter。
在[系結套件]畫面的位置名稱欄位中輸入「HISDRDA1」,然後按Tab鍵。在COLLECTION-ID欄位中輸入「DBO」,然後按Tab鍵。在DBRD或COPY選項欄位中輸入COPY,然後按Tab鍵。在COLLECTION-ID欄位中輸入「DBO」,然後按Tab鍵。在PACKAGE-ID欄位中輸入「PKGAREAS」,然後按Tab鍵將游標定位在ACTION ON PACKAGE欄位上。 在 [ ACTION ON PACKAGE] 欄位中,輸入 “ADD”,然後按 Enter。
DB2 管理員系結複製套件
在 [ 開始] 功能表上,指向 [ 所有程式],指向 [Microsoft主機整合伺服器 2010],單擊 [ 工具],然後按兩下 [3270 用戶端]。
在 [ 主機整合伺服器 3270 用戶端 (3270 用戶端 )] 視窗中,按兩下 [ 會話 ] 功能表,然後按兩下 [ 工作話設定]。
在 [3270 設定] 對話框中,選取 [TN3270E伺服器連線],在 [伺服器名稱] 編輯方塊中輸入 “SYS1”,然後按兩下 [確定]。
在 工作階段 功能表上,按一下 連線。 3270 用戶端會顯示 SSCP 畫面。 在游標(左下角)輸入 TSO HISDEMO,然後按 Enter。
在 TSO/E LOGON 畫面的游標 (密碼 ] 欄位中,輸入 HISDEMO,然後按 Enter。
在 [歡迎使用 ] 畫面上,按 Enter,以擷取其餘畫面數據。 在 READY 提示下方輸入 ISPF,然後按 Enter。
在 [ISPF 主要選項功能表 ] 畫面上,按 Enter 鍵以清除 IBM 授權文字。 在游標 (Option), 輸入 M,然後按 Enter。
在 [ 用戶選項選取功能表 ] 畫面的游標上輸入B,然後按 Enter 鍵。
在 IBM 產品面板 畫面中,在選項處輸入 3,然後按 Enter。
在 [DB2 系統管理員 – 使用中 DB2 系統 ] 畫面上,於游標 (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。