用SQL Server寫指令碼和程式設計實現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的方式,無論是指令碼還是程式設計,都是根據你的需求和你的能力來決定的。因為你可以使用兩種方式——即使在同一時間!——你都可以不用費很多力氣。你還可以根據需要進行修正和匹配。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-544963/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 通過編寫指令碼和程式來擴充套件SSIS包NZ指令碼套件
- 用Shell擴充套件實現原始碼統計程式套件原始碼
- SQL Server 2008的效能和擴充套件SQLServer套件
- 寫擴充套件性好的程式碼:函式套件函式
- 原生js實現的物件複製和擴充套件程式碼例項JS物件套件
- linux下php實現C/C++擴充套件程式設計LinuxPHPC++套件程式設計
- 編寫可擴充套件程式套件
- c#直接呼叫ssis包實現Sql Server的資料匯入功能C#SQLServer
- SQL Server 禁用擴充套件儲存過程SQLServer套件儲存過程
- Flink SQL 在快手的擴充套件和實踐SQL套件
- 使用高階函式實現類的擴充套件設計函式套件
- plain framework的實際應用和擴充套件AIFramework套件
- [VS Code擴充套件]寫一個程式碼片段管理外掛(二):功能實現套件
- shell擴充套件——免互動指令碼套件指令碼
- 在SQL Server命名例項上的SSIS程式包獲取方法SQLServer
- 怎樣用 Bash 程式設計:邏輯操作符和 shell 擴充套件程式設計套件
- SQL_Postgresql-一些擴充套件和應用SQL套件
- 寫一個Laravel中文驗證擴充套件包Laravel套件
- SQL Story摘錄(三)————可擴充套件設計 (轉)SQL套件
- PDF 擴充套件包使用套件
- 可預測的效能和實際的可擴充套件性——SQL Server 2008套件SQLServer
- laravel框架應用和composer擴充套件包開發Laravel框架套件
- 擴充套件JAAS,XMLPolicyFile實現套件XML
- Laravel 是自動發現擴充套件包是怎樣實現的Laravel套件
- ReactiveUI是.NET的Reactive程式設計擴充套件框架ReactUI程式設計套件框架
- 正確讀取SQL Server中的擴充套件事件SQLServer套件事件
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- 【PHP】php安裝bcmath擴充套件指令碼PHP套件指令碼
- Java併發程式設計:效能、擴充套件性和響應Java程式設計套件
- 實現近乎無限可擴充套件性的7種設計模式套件設計模式
- 擴充套件推薦:laravel線上程式碼編輯器擴充套件包(純瀏覽器版的vscode)套件Laravel瀏覽器VSCode
- 水平和垂直劃分擴充套件SQL Server系統套件SQLServer
- Shell擴充套件程式設計實現Windows2000桌面圖示透明套件程式設計Windows
- 分享自己寫的關於順豐同城配送的擴充套件包套件
- [擴充套件]laravel-xlswriter 一款基於xlswriter的laravel擴充套件包 excel極速讀寫套件LaravelExcel
- Zabbix-server SNMPTrap擴充套件Server套件
- CheckBoxList擴充套件方法程式碼套件
- PostgreSQL 安裝擴充套件包SQL套件