IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁數(shù)據(jù)庫MSSQL → SQL Server可寫腳本和編程擴(kuò)展SSIS包

SQL Server可寫腳本和編程擴(kuò)展SSIS包

時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(0)

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

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

簡單方式:腳本

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

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

腳本任務(wù)(Script Task)是你用來在包里面實現(xiàn)一般目的的流控制的——它比腳本組件(Script Component)更加全局化,功能更強(qiáng)大,但是也復(fù)雜得多。它在包的數(shù)據(jù)流之外運(yùn)行,不能被數(shù)據(jù)流的工作方式約束,雖然腳本任務(wù)通常都是只有包被觸發(fā)的情況下才運(yùn)行(雖然你可以構(gòu)建在異常里面)。任務(wù)也支持?jǐn)帱c(diǎn)和調(diào)試,這在你編寫了比較精細(xì)的具有控制邏輯或者完成某類決策制訂的腳本的時候比較有用。關(guān)于腳本任務(wù)的一個例子就是查詢活動目錄,尋找一些關(guān)于數(shù)據(jù)的信息,或者是與另外一個數(shù)據(jù)倉庫對話——都是在運(yùn)行包之前。

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

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

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

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

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

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

結(jié)論

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

關(guān)鍵詞標(biāo)簽:SQL Server,SSIS包

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 淺談JSP JDBC來連接SQL Server 2005的方法 淺談JSP JDBC來連接SQL Server 2005的方法 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 SqlServer2005對現(xiàn)有數(shù)據(jù)進(jìn)行分區(qū)具體步驟 sql server系統(tǒng)表損壞的解決方法 sql server系統(tǒng)表損壞的解決方法 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系 MS-SQL2005服務(wù)器登錄名、角色、數(shù)據(jù)庫用戶、角色、架構(gòu)的關(guān)系

相關(guān)下載

    人氣排行 配置和注冊O(shè)DBC數(shù)據(jù)源-odbc數(shù)據(jù)源配置教程 如何遠(yuǎn)程備份(還原)SQL2000數(shù)據(jù)庫 SQL2000數(shù)據(jù)庫遠(yuǎn)程導(dǎo)入(導(dǎo)出)數(shù)據(jù) SQL2000和SQL2005數(shù)據(jù)庫服務(wù)端口查看或修改 修改Sql Server唯一約束教程 SQL Server 2005降級到2000的正確操作步驟 sql server系統(tǒng)表損壞的解決方法 淺談JSP JDBC來連接SQL Server 2005的方法