首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 DTS (中):自訂任務、工作流優先權限制、連接管理、資料泵轉換

     編輯:關於SqlServer

接續上篇,本文詳細說明 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)

自訂轉換開發 (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
    ↓
關閉資料列集 → 任務結束
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
內建轉換說明
複製欄位來源 → 目的地直接對應,無轉換
ActiveX ScriptVBScript/JScript/Perl 自訂邏輯,**逐列執行**,大量資料效能差
DateTime 字串日期時間格式轉換 (如 yyyyMMdd ↔ yyyy-MM-dd)
小寫/大寫字串字串大小寫轉換 + 型別轉換
中間字串Substring 擷取 (起始、長度)
修剪字串移除前導/尾隨/內嵌空白
讀取檔案來源欄位為檔名 → 讀取檔案內容寫入目的欄位 (text/image)
寫入檔案來源欄位資料 → 寫入檔案 (路徑由第二欄位指定)