程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 通過Visual C#.NET建一個DTS任務

通過Visual C#.NET建一個DTS任務

編輯:C#基礎知識

本文描述了如何利用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\ 

下面的代碼示范非注冊函數的任務移出的執行。面注冊函數是ComUnregisterFunctionAttribute類在.NET

運行庫的一部分。想浏覽這個函數的完整代碼,你可以看“編譯、注冊和安裝自定義任務”部分: 

[System.Runtime.InteropServices.ComUnregisterFunctionAttribute()]  



static void UnregisterServer(Type t)  



{  



 //code to unregister custom task  



}   



免注冊函數通過從注冊表中刪除下面鍵值從DTS任務緩存中移出任務 

HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\80

\DTS\Enumeration\Tasks\A39847F3-5845-4459-A25E-DE73A8E3CD48 

最後,自定義的任務像dual_interface COM組件一樣被開放。您從所有的類的public,非靜態的字段,屬

性和方法創建一個默認的接口。在下面的一行代碼在自定義任務源文件中USING應用之後: 

[assembly:ClassInterface(ClassInterfaceType.AutoDual)] 

這部分的代碼已經完全列舉了。 

增加功能性的自定義任務 

本文“編譯、注冊和安裝自定義任務”部分包含一個簡單的DTS自定義任務代碼。任務有兩個屬性:Name

和Description,Description屬性的值就會出現在消息框中。這個例子描述了一個最小化的代碼,你可以

使用已有的功能性的DTS定義任務。然而,你可以通過執行CustomTaskUI接口創建一個用戶界面,但是那

並不作討論。通過只執行自定義的接口,DTS設計者為自定義任務創建一個默認的有戶界面。 

所有的DTS自定義任務執行自定義任務接口。自定義的用戶接口是由兩個屬性,一個集合和一個方法: 

1、 Name和Description屬性; 

2、 Properties集; 

3、 Execute方法。 

所有的自定義任務應該執行屬性、屬性集和Execute方法。

(責任編輯 火鳳凰 [email protected]  TEL:(010)68476636-8007)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved