接續上篇,本文詳細說明 DTS 套件進階功能:自訂任務註冊、工作流優先權限制 (藍/綠/紅箭頭)、連接類型與設定、資料泵轉換類型與錯誤記錄、多階段資料泵。
一、 自訂任務開發與註冊
- 使用 COM 介面 (
IDTSTask) 開發自訂任務 (VB6/C++/ATL)
2. 編譯為 DLL → regsvr32 MyCustomTask.dll 註冊
3. DTS 設計器 → 右鍵工具箱 → 「註冊自訂任務」 → 選擇 DLL → 圖示出現在工具箱
4. 可封裝專屬邏輯:特定檔案格式解析、加密/解密、外部 API 呼叫等
二、 工作流優先權限制 (Precedence Constraints)
| 類型 | 顏色 | 觸發條件 | 典型用途 |
| 完成順序 | 藍色 | 上游任務**完成** (不論成敗) | 發送通知、清理暫存檔 |
| 成功 | 綠色 | 上游任務**成功完成** | 正常資料流續接 |
| 失敗 | 紅色 | 上游任務**失敗** | 錯誤處理、告警、補償邏輯 |
複合邏輯 (AND/OR)
- 單一任務可有多個輸入限制 → **預設 AND** (全部滿足才觸發)
- 右鍵限制線 → 「邏輯」→ 改為 **OR** (任一滿足即觸發)
- 範例:任務 C 依賴 A 成功 **且** B 失敗才執行 (罕見但可實作)
三、 連接管理 (Connection Managers)
支援 OLE DB Provider / ODBC Driver 完整清單:
- Microsoft OLE DB Provider for SQL Server
- Microsoft OLE DB Provider for Oracle / Jet (Access/Excel) / ODBC
- IBM DB2, Sybase, Informix, Oracle OLE DB Providers
- 文字檔、HTML、Excel、Access 等檔案型連接
連接屬性關鍵設定
- 保留密碼:套件儲存時是否加密密碼 (建議勾選、配合套件密碼)
- 連接字串:可用全域變數動態替換 (如伺服器名、資料庫名)
- 驗證模式:Windows 整合 / SQL Server 驗證
四、 資料泵轉換 (Data Pump Transformations)
| 內建轉換 | 說明 |
| 複製欄位 | 來源 → 目的地直接對應,無轉換 |
| ActiveX Script | VBScript/JScript/Perl 自訂邏輯,**逐列執行**,大量資料效能差 |
| DateTime 字串 | 日期時間格式轉換 (如 yyyyMMdd ↔ yyyy-MM-dd) |
| 小寫/大寫字串 | 字串大小寫轉換 + 型別轉換 |
| 中間字串 | Substring 擷取 (起始、長度) |
| 修剪字串 | 移除前導/尾隨/內嵌空白 |
| 讀取檔案 | 來源欄位為檔名 → 讀取檔案內容寫入目的欄位 (text/image) |
| 寫入檔案 | 來源欄位資料 → 寫入檔案 (路徑由第二欄位指定) |
自訂轉換開發 (ATL Template)
1. Visual C++ ATL 專案 → 選「DTS Custom Transform」模板
2. 實作 IDTSDataPumpTransform 介面 (InsertRow, GetColumn 等)
3. 註冊 DLL → DTS 設計器即可使用,效能遠優於 ActiveX Script
五、 資料泵錯誤記錄 (Error Logging)
每個轉換任務可獨立設定三種記錄檔:
- 錯誤文字檔:一般錯誤訊息 (轉換失敗、資料型別不符)
- 來源錯誤列檔:轉換失敗的**來源資料列**完整內容
- 目的地錯誤列檔:寫入失敗的**目的地資料列** (如 PK 衝突、Null 違反)
優點:失敗資料不丟失、可離線分析修正、重跑補載。
六、 多階段資料泵 (Multi-phase Data Pump)
- SQL 2000 新增:勾選「多階段資料泵」→ 在不同階段 (Phase 1..N) 注入自訂邏輯
- 階段順序:Phase 1: 資料列轉換 → Phase 2: 資料列插入前 → Phase 3: 批次認可前 → Phase 4: 批次認可後
- 適用:跨階段共享狀態、動態調整批次大小、複雜 ETL 控制流
七、 資料泵處理流程圖解
來源連接 → 開啟資料列集 → 建立資料泵實例
↓
FOR 每一列
Phase 1: 轉換 (內建/自訂)
Phase 2: 插入前處理
寫入目的地資料列集
Phase 3: 批次認可前
認可批次
Phase 4: 批次認可後
END FOR
↓
關閉資料列集 → 任務結束
- 上一篇文章: SQL Server 2000 系統追蹤函數 fn_trace_gettable 完整解析:讀取 .trc 檔案、滾動檔案處理、效能分析實戰
- 下一篇文章: SQL Server 2000 DTS (下):資料泵架構、查詢設計器、轉換類型、錯誤記錄、多階段資料泵完整圖解
Copyright ©
程式碼之家 All Rights Reserved