初次接觸 DB2 (Windows 環境) 的開發者,常在「建立實例 → 建立資料庫 → 客戶端連線」三個階段踩坑。本文記錄完整避坑指南,含指令細節、註冊表層級設定差異、客戶端類型選擇與編目連線流程。
db2icrt INSTNAME
SQL1052N The database path "D:/foo/bar" does not exist.
Windows 預設禁止在非預設路徑建立資料庫,需開啟註冊表變數 DB2_CREATE_DB_ON_PATH。
db2set -i INSTNAME DB2_CREATE_DB_ON_PATH=YES
-i INSTNAME 指定實例層級註冊表 ([i] instance level);若省略則寫入預設實例 (DB2),無效。db2set -i INSTNAME -all 應看到 [i] DB2_CREATE_DB_ON_PATH=YES。或使用「配置助手」GUI 設定同樣參數。
| 客戶端套件 | 大小 | 包含工具 | 適用場景 |
|---|---|---|---|
| IBM Data Server Client | ~330 MB | 完整 GUI (Configuration Assistant, Control Center, Visual Studio Add-ins...) | 開發機、需圖形化管理 |
| IBM Data Server Runtime Client | ~60-70 MB | CLP、所有驅動程式 (JDBC, ODBC, .NET, PHP, Ruby...) | 應用伺服器、無需 GUI |
| JDBC/SQLJ Driver (db2jcc.jar) | ~2 MB | 純 Java 應用 | Java 應用、容器化部署 |
| ODBC/CLI/.NET Driver | ~10 MB | ODBC、CLI、.NET Provider、PHP/Perl/Ruby 二進位 | .NET 應用、輕量部署 |
下載位置:IBM DB2 試用/下載頁
db2 update dbm cfg using SVCENAME 50000 (或服務名)。# 1. 啟動 CLP
db2
# 2. 編目遠端節點 (節點名自訂)
db2 => CATALOG TCPIP NODE MYDB2 REMOTE 192.168.0.11 SERVER 50000
# 3. 編目資料庫別名 (別名不可與本地資料庫同名)
db2 => CATALOG DATABASE MYTEST AS MYTESTALIAS AT NODE MYDB2
# 4. 連線測試
db2 => CONNECT TO MYTESTALIAS USER USERNAME USING PASSWORD
原理:客戶端維護本地「節點目錄」與「資料庫目錄」;節點記錄伺服器 IP/埠,資料庫目錄將別名對應至節點。
db2 LIST NODE DIRECTORY -- 檢視節點目錄
db2 LIST DATABASE DIRECTORY -- 檢視系統資料庫目錄
db2 LIST DATABASE DIRECTORY ON C: -- 檢視本地資料庫目錄
db2 UNCATALOG NODE MYDB2 -- 移除節點
db2 UNCATALOG DATABASE MYTESTALIAS -- 移除資料庫別名
CONNECT、CREATETAB、DBADM、DATAACCESS、SECADM 等資料庫權限;SELECT/INSERT/UPDATE/DELETE/CONTROL 等物件權限。GRANT/REVOKE SQL。詳細權限說明:IBM Knowledge Center - Database authorities
掌握「實例建立 → 註冊表路徑開啟 → 伺服器 TCP/IP → 客戶端編目 → OS 認證 → 資料庫權限」完整鏈路,即可順利建立 DB2 開發/測試環境。關鍵口訣:實例名 ≤ 8 字元、DB2_CREATE_DB_ON_PATH 用 -i 指定實例、客戶端編目節點再編目資料庫。