本文描述了如何利用Visual C#.net 創建一個DTS 自定義的任務。你可以通過C#.net創建自定義的任務的方式擴展DTS的功能。之後你可以安裝並注冊任務,他講出現在DTS設計其中,就像默認的DTS任務。總之,你能夠使用.Net Framework創建自定義的任務。
在本文中除了講創建一個DTS自定義任務外,還包括一下部分內容:
1、這篇文章中自定義的代碼分為編譯、注冊和安裝自定義任務;
2、這部分一個有特色的部分就是你可以運行自定義的任務;
3、在開發過程中你可以使用本文提及的一些工具(除非另有說明,這些工具已經包含在.NET中了,您可以通過.Net的命令行運行這些工具)。
為DTSSpkg.dll創建一個及時的包
如果一個基於微軟.Net客戶機訪問一個COM組件,你必須使用一個包(這個組件包含的)。這類的包是及時的運行包(RCW)並且你也可以通過開放Dtspkg.dll的類型庫編譯。你也可以使用類型庫導出工具(Tlbimp.exe)編譯RCW,如:
tlbimp.exe “C:\ProgramFiles\Microsoft SQLServer\80\tools\Binn\dtspkg.dll”/out:Microsoft.SQLServver.DTSPKG80.dll/keyfile:DTSPkg.snk
“/keyfile”參數代表Microsoft.SQLServer.DTSPkg80.dll帶有強類型名用public或private關鍵字。使用強類型名工具(sn.exe)在DTSPkg.snk 前創建關鍵字:
sn.exe –k DTSPkg.snk
你應該使用一個強類型名像其他的全局集合緩存,因為你安裝了運行包。
在全局集合緩存中安裝運行包
用全局集合緩存工具(GaCutil.exe)安裝運行包:
gacutil.exe /I Microsoft.SQLServer.DTSPkg80.dll
安裝了運行包後,你可以像添加.NetC#工程中的引用一樣的添加。
為自定義的任務添加代碼
代碼的自定義注冊。.Net沒有開放DllReginsterServer 和DllUnregisterServer 像COM組件的入口,但是你可以使用ComRegisterFunctionAttribute 類執行任務注冊和撤銷注冊。在自定義類聲明之前添加下面代碼:
[Guid("A39847F3-5845-4459-A25E-DE73A8E3CD48"), ComVisible(true)]
[ProgId("DTS.SimpleTask")]
public class SimpleTask : CustomTask
{
//implementation of custom task
}
下面的代碼是一個函數注冊的范例執行。函數的全部代碼在自定義任務的編譯、注冊和安裝部分 。
[System.Runtime.InteropServices.ComRegisterFunctionAttribute()]
static void RegisterServer(Type t)
{
//code to register custom task
}
注冊函數增加下面的鍵值用來注冊。
HKEY_CLASSES_ROOT\CLSID\A39847F3-5845-4459-A25E-DE73A8E3CD48\Implemented CategorIEs\{10020200-EB1C-11CF-AE6E-00AA004A34D5}
10020200-EB1C-11CF-AE6E-00AA004A34D5是DTS包對象的類編號。因為所有的自定義的任務執行自定義的接口所以必須注冊。注冊函數添加下面的注冊鍵值:
HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\80\DTS\Enumeration\Tasks\A39847F3-5845-4459-A25E-DE73A8E3CD48
下面的DTS任務緩存目錄列表,使自定義的任務出現在DTS設計器中:
HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\80\DTS\Enumeration\Tasks\