透過 C#.NET 建立自訂任務擴充 DTS 功能,安裝註冊後將出現在 DTS 設計師中,如同內建任務般使用。
.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
gacutil.exe /i Microsoft.SQLServer.DTSPkg80.dll
[Guid("A39847F3-5845-4459-A25E-DE73A8E3CD48"), ComVisible(true)]
[ProgId("DTS.SimpleTask")]
public class SimpleTask : CustomTask
{
// 實作 CustomTask 介面成員
}
.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 方法邏輯、屬性介面與部署細節。