程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server可寫腳本和編程擴展SSIS包

SQL Server可寫腳本和編程擴展SSIS包

編輯:關於SqlServer

微軟的SQL Server 2005中用來替代數據傳輸服務(DTS)的SQL Server綜合服務(SSIS),包含了很多工具用於導入數據並將其轉換為有意義的信息,而不僅僅是被動的導入。但是還有一點要注意的是,你會發現這個新的SSIS工具有時候並不能完全覆蓋你要做的所有事情。

因此,微軟提供了兩種基本方法來擴展SSIS的功能。一種方法對那些沒有很多編程經驗,或者是不需要編寫復雜程序的人們來說相對簡單;另一種方法就是復雜的,它可以讓喜歡挑戰的程序員深入SSIS,對其進行很大程度上的擴展。

簡單方式:腳本

我們中的大多數人都在某種程度上至少接觸過腳本,SSIS通過在SSIS包中使用VB .NET來為程序員提供編寫腳本動作的功能。腳本的范圍,與客戶項目相比,是十分小並且集中的;那是在你需要在現有的包允許或者已經完成的范圍內多少做些修改的時候使用的。

在SSIS包裡面,有兩個元素是你可以用來添加腳本的:Script Task(在綜合服務設計應用程序的控制流窗口中)和Script Component(在數據流窗口中)。它們倆的應用環境稍微有些不同。

腳本任務(Script Task)是你用來在包裡面實現一般目的的流控制的——它比腳本組件(Script Component)更加全局化,功能更強大,但是也復雜得多。它在包的數據流之外運行,不能被數據流的工作方式約束,雖然腳本任務通常都是只有包被觸發的情況下才運行(雖然你可以構建在異常裡面)。任務也支持斷點和調試,這在你編寫了比較精細的具有控制邏輯或者完成某類決策制訂的腳本的時候比較有用。關於腳本任務的一個例子就是查詢活動目錄,尋找一些關於數據的信息,或者是與另外一個數據倉庫對話——都是在運行包之前。

腳本組件更加貼近數據流工作的方式。腳本組件不是在整個包中之運行一次,而是它的主要處理為每個需要處理的數據行運行一次。腳本組件有三個比較基本的運行環境:數據源、數據轉換,或者數據目標。組件的交互性也比較小——它並不支持腳本任務支持的那種類型的調試,這是其一。使用腳本組件的大多數情況是類似一行接一行的轉換,構建客戶ODBC目標,或者是不能通過SSIS本地函數處理的不重要的錯誤處理或者轉換動作。

高級方式:對客戶對象編程

雖然SSIS包裡面的腳本很強大,有時候它仍然無法完成某些任務。在一些情況下,你可能需要從頭編寫(或者其他人編寫)一個客戶 SSIS 擴展。這不是輕松完成的事情;它需要你從根本上完全理解編程。但是對於客戶對象,它可能會以某種方式是使用SSIS,但是這方式絕對不是簡單的自動化任務。

例如,如果你的數據源不支持任何現有的SSIS轉換(例如,一些古怪的不再被制造廠商支持的私有數據源),你可以編寫客戶連接管理對象來允許像在本地那樣使用這個數據。同樣,你可以創建客戶任務,日志提供商,或者是通過SSIS實現的帶有同樣的編程庫的數據流組件。

以上談到的每一種類型都可以作為SSIS支持的語言中的基本類、屬性和方法集使用:Visual Basic, C#, C++, J# 和Jscript。C++, C# 和VB更容易產生最好的結果,因為在這些情況下它們在更大程度上被開發人員和供應商支持。想法就是你所使用的語言不應該成為你的障礙;它們都可以插入到同一個外部編程接口。你還可以為客戶對象創建用戶接口,通過標准的Windows窗體,無論是否需要它們。

一個極端強大的此類例子就是,你可以通過SSIS客戶對象創建可定制的前端調查裝置 。我們說,如果你想要創建一組程序類來為集合中的每個對象集執行任務,例如,數據庫中的一組表。如果你想要在很廣泛的范圍內實現這樣的一個動作,並且不需要每次都重新發明一次輪子,這就是一中最好的實現方式。當你對一些新類型的數據(例如上面例子中提到的)創建客戶連接管理器,並且想要在上面創建客戶前端動作的時候,它就特別有用處了。

結論

你擴展SSIS的方式,無論是腳本還是編程,都是根據你的需求和你的能力來決定的。因為你可以使用兩種方式——即使在同一時間!——你都可以不用費很多力氣。你還可以根據需要進行修正和匹配。

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