DTS 系列最終篇,聚焦資料泵核心架構:查詢設計器視覺化建立來源查詢、參數化查詢支援、轉換類型完整對照、錯誤記錄三檔案機制、多階段資料泵四階段流程與處理時序圖。
資料泵 (DataPump) 是 DTS 物件模型核心,負責:
SELECT * FROM Orders WHERE OrderDate > ? AND CustomerID = ?| 轉換名稱 | 功能 | 效能備註 |
|---|---|---|
| 複製欄位 | 直通對應 | 最快、無 CPU 開銷 |
| ActiveX Script | VBScript/JScript/Perl 任意邏輯 | **逐列解譯執行,大量資料極慢** |
| DateTime 字串 | 日期格式互轉 | 快 |
| 小寫字串 | UPPER→LOWER + 型別轉換 | 快 |
| 大寫字串 | LOWER→UPPER + 型別轉換 | 快 |
| 中間字串 | SUBSTRING 擷取 | 快 |
| 修剪字串 | LTRIM/RTRIM/內嵌空白移除 | 快 |
| 讀取檔案 | 來源欄位=檔名 → 讀內容寫入目的欄位 (text/ntext/image) | IO 密集 |
| 寫入檔案 | 來源欄位資料 → 寫入檔案 (路徑由第二欄位指定) | IO 密集 |
| 檔案類型 | 內容 | 觸發時機 |
|---|---|---|
| 錯誤文字檔 | 錯誤代碼、描述、時間、任務名 | 任何轉換/寫入錯誤 |
| 來源錯誤列檔 | 完整來源資料列 (含所有欄位) | 轉換階段失敗 |
| 目的地錯誤列檔 | 嘗試寫入的目的資料列 | 插入/更新失敗 (PK/FK/Null/型別) |
設定位置:轉換任務屬性 → 「錯誤記錄」頁籤 → 指定三檔案路徑。
階段 1: 資料列轉換 (Phase 1)
├─ 內建/自訂轉換執行
└─ 產生轉換後資料列
階段 2: 資料列插入前 (Phase 2)
├─ 可檢查/修改即將寫入的資料列
└─ 可決定是否略過此列 (Return DTSTransformStat_SkipRow)
階段 3: 批次認可前 (Phase 3)
├─ 批次層級邏輯 (如動態調整批次大小、發送進度事件)
└─ 可決定是否中止批次
階段 4: 批次認可後 (Phase 4)
├─ 批次成功認可後通知
└─ 可觸發下游任務、寫入稽核日誌
啟用方式:DTS 設計器 → 資料泵任務右鍵 → 「屬性」→ 「進階」→ 勾選「多階段資料泵」。
[開始任務] ↓ [開啟來源/目的連接] ↓ [建立資料列集] ↓ [建立資料泵實例] ↓ +-------------------------+ | FOR 每一來源資料列 | | Phase 1: 轉換 | | Phase 2: 插入前 | | 寫入目的資料列集 | | END FOR | +-------------------------+ ↓ [Phase 3: 批次認可前] → [認可批次] → [Phase 4: 批次認可後] ↓ (重複直到所有列處理完) [關閉資料列集] ↓ [關閉連接] ↓ [任務結束]