| 特性 | Type 1 (預設) | Type 2 |
|---|---|---|
| CONNECT 行為 | 斷開現有連接,建立新連接 | 保留現有連接,新增連接 |
| 單一事務 | 只能操作一個資料庫 | 可操作多個資料庫(分布式工作單元) |
| 同一資料庫多連接 | 不允許 | 不允許 |
| 適用場景 | 單庫應用 | 跨庫事務、分布式應用 |
$ db2 list applications
Authid Appl Name Appl Handle Appl Id DB Name Agents
DB2ADMIN db2dasstm.exe 10 *LOCAL.DB2.00A180010035 DWCTRLDB 1
DB2ADMIN db2dasstm.exe 9 *LOCAL.DB2.00A180010034 DWCTRLDB 1
DB2ADMIN db2dasstm.exe 8 *LOCAL.DB2.00A180010020 DWCTRLDB 1
$ db2 connect to otherdb
Database Connection Information
Database server = DB2/NT 8.1.2
SQL authorization ID = DAVID
Local database alias = OTHERDB
$ db2 connect to sample
Database Connection Information
... Local database alias = SAMPLE
$ db2 list applications
Authid Appl Name Appl Handle Appl Id DB Name Agents
DAVID db2bp.exe 22 *LOCAL.DB2.012480161735 SAMPLE 1
DB2ADMIN ... (DAS 連接保持不變)
觀察:第二個 connect to sample 導致第一個 otherdb 連接被斷開,應用程式清單僅剩 SAMPLE 連接。
$ db2 set client connect 2
DB20000I SET CLIENT 命令成功完成。
$ db2 connect to otherdb
... Local database alias = OTHERDB
$ db2 list applications
Authid Appl Name Appl Handle Appl Id DB Name Agents
DAVID db2bp.exe 23 *LOCAL.DB2.012480161849 OTHERDB 1
DAVID db2bp.exe 22 *LOCAL.DB2.012480161735 SAMPLE 1
DB2ADMIN ... (DAS 連接)
關鍵差異:兩個連接 同時存在(Handle 22 與 23),事務可跨庫操作。
SYNCPOINT ONEPhase(預設):單階段提交,適合單資源管理器或非 XA 環境。SYNCPOINT TWOPhase:兩階段提交(XA),需資源管理器支援,保證跨庫原子性。SYNCPOINT NONE:無協調,應用自行管理,極少用。Type 2 下雖可持有多連接,但 SQL 執行僅針對最近建立的連接。切換方式:
SET CONNECTION <db_alias>;
SQLSetConnectAttr(hdbc, SQL_ATTR_CONNECTTYPE, (SQLPOINTER)SQL_CONNECT_TYPE_2, 0)DataSource.setClientConnectType(2)(JCC 驅動)或連線屬性 clientConnectType=2。Type 2 連接模式是實現分布式事務、跨資料庫操作的基石。理解其連接保留機制、同步點選項與連接切換語法,對開發跨庫應用至關重要。