CREATE SERVER 核心角色
在 DB2 Federation (同聯邦) 架構中,CREATE SERVER 定義**遠端資料源伺服器的連接端點**,關聯 Wrapper (通訊協議庫) 與認證資訊,供後續 CREATE NICKNAME 映射遠端物件。
完整語法
CREATE SERVER server_name
[ TYPE server_type ]
[ VERSION { version_string | 'version_string' } ]
[ WRAPPER wrapper_name ]
[ AUTHORIZATION "auth_id" PASSWORD "password" ]
[ OPTIONS ( option_name 'value' [, ...] ) ]
參數詳細解析
| 參數 | 必要性 | 說明 |
server_name | 是 | 本地唯一伺服器名稱 (如 FP, ORA_SRV)。 |
TYPE | 建議 | 遠端資料源類型/OS:DB2/LINUX, DB2/WINDOWS, DB2/ZOS, ORACLE, MSSQLSERVER 等。優化器用於推斷能力。 |
VERSION | 建議 | 遠端版本 (如 '11.5', '12c')。影響功能相容性判斷 (如謂詞下推)。 |
WRAPPER | 是 | 關聯 CREATE WRAPPER 定義的包裝器名 (如 DRDA, NET8, MSSQLODBC)。 |
AUTHORIZATION / PASSWORD | 選填 | 遠端連接預設認證。可被 CREATE USER MAPPING 覆蓋。區分大小寫需雙引號。 |
OPTIONS | 視 Wrapper | Wrapper 專屬選項。DRDA 必填 DBNAME 'remote_db_alias' (遠端資料庫別名,需本地編目)。 |
實戰範例:DB2 連接 DB2 (DRDA Wrapper)
1. 建立 DRDA Wrapper (一次性)
-- Linux/AIX
CREATE WRAPPER DRDA LIBRARY 'libdb2drda.a';
-- Windows
CREATE WRAPPER DRDA LIBRARY 'db2drda.dll';
2. 完整 CREATE SERVER 範例
CREATE SERVER DB2SERVER
TYPE DB2/LINUX
VERSION '11.5'
WRAPPER DRDA
AUTHORIZATION "remote_user"
PASSWORD "remote_pwd"
OPTIONS (
DBNAME 'REMOTE_DB_ALIAS', -- 必填: 遠端資料庫別名 (本地已 CATALOG)
NODE 'REMOTE_NODE', -- 可選: 遠端節點名 (若 DBNAME 未編目節點)
PUSHDOWN 'Y', -- 可選: 謂詞下推開關 (預設 Y)
TIMEFORMAT 'Y', -- 可選: 日期時間格式轉換
VARCHAR_NO_TRAIL_BLANKS 'Y' -- 可選: VARCHAR 尾部空白處理
);
3. 後續步驟 (完整鏈路)
-- 用戶映射 (覆蓋 SERVER 級預設認證)
CREATE USER MAPPING FOR "local_user" SERVER "DB2SERVER"
OPTIONS (REMOTE_AUTHID 'remote_user', REMOTE_PASSWORD 'remote_pwd');
-- 別名映射遠端表
CREATE NICKNAME LOCAL_EMP FOR "DB2SERVER"."REMOTE_SCHEMA"."EMPLOYEE";
-- 查詢驗證
SELECT * FROM LOCAL_EMP WHERE WORKDEPT = 'A00';
異構資料源關鍵差異
| 目標資料源 | Wrapper | Library | SERVER TYPE | 關鍵 OPTIONS |
| DB2 (LUW/zOS) | DRDA | libdb2drda.a / db2drda.dll | DB2/LINUX, DB2/ZOS | DBNAME (必填) |
| Oracle | NET8 | libdb2net8.a / db2net8.dll | ORACLE | NODE (TNS 服務名) |
| Microsoft SQL Server | MSSQLODBC | libdb2mssqlodbc.a / db2mssqlodbc.dll | MSSQLSERVER | NODE (DSN), DBNAME |
| Informix | INFORMIX | libdb2informix.a | INFORMIX | NODE, DBNAME |
| ODBC 通用 | ODBC | libdb2odbc.a / db2odbc.dll | ODBC | NODE (DSN) |
常見問題排查
SQL1101N:DBNAME 未在本地 CATALOG DATABASE / CATALOG TCPIP NODE。
SQL30081N:網路不通、防火牆、埠錯誤、主機名解析失敗。
- Wrapper Library 載入失敗:32/64 位不匹配、Library 路徑不在
LIBPATH/PATH、缺少依賴庫 (如 Oracle Client)。
- 謂詞未下推:檢查
PUSHDOWN 選項、遠端版本支援度、統計資訊是否收集 (NNSTAT)。