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

C#.NET 建立 DTS 自訂任務(一):架構概觀、RCW 建立與註冊機制

     編輯:關於C語言

DTS 自訂任務擴充架構

透過 C#.NET 建立自訂任務擴充 DTS 功能,安裝註冊後將出現在 DTS 設計師中,如同內建任務般使用。

本文涵蓋範圍

  1. 自訂任務程式碼結構:編譯、註冊、安裝
  2. 任務執行機制
  3. 開發工具介紹 (內建於 .NET Framework)

建立 dtspkg.dll 的 RCW (Runtime Callable Wrapper)

.NET 客戶端存取 COM 組件需透過 RCW:

tlbimp.exe "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\dtspkg.dll" 
    /out:Microsoft.SQLServer.DTSPkg80.dll 
    /keyfile:DTSPkg.snk

產生強式名稱金鑰

sn.exe -k DTSPkg.snk

安裝至全域組件快取 (GAC)

gacutil.exe /i Microsoft.SQLServer.DTSPkg80.dll

自訂任務類別基本架構

[Guid("A39847F3-5845-4459-A25E-DE73A8E3CD48"), ComVisible(true)]
[ProgId("DTS.SimpleTask")]
public class SimpleTask : CustomTask
{
    // 實作 CustomTask 介面成員
}

COM 註冊函式機制

.NET 無 DllRegisterServer 進入點,改用屬性標記靜態方法:

[ComRegisterFunction]
static void RegisterServer(Type t)
{
    // 1. 註冊 COM 分類: 
    //    HKEY_CLASSES_ROOT\CLSID\{GUID}\Implemented Categories\{10020200-EB1C-11CF-AE6E-00AA004A34D5}
    
    // 2. 加入 DTS 任務快取:
    //    HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\80\DTS\Enumeration\Tasks\{GUID}
}

10020200-EB1C-11CF-AE6E-00AA004A34D5 為 DTS 套件物件類別 ID,所有自訂任務必須實作 CustomTask 介面故需註冊此分類。

反註冊函式

[ComUnregisterFunction]
static void UnregisterServer(Type t)
{
    // 從 DTS 快取移除任務
}

下篇預告

完整 SimpleCustomTask 實作碼、Execute 方法邏輯、屬性介面與部署細節。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved