SSIS(SQL Server Integration Service)是在SQL Server2000的DTS的基礎上做的一個非常大的改進的新工具。採用了資料流和控制流程分離,設計和部署分離的架構設計,引入了更多新的轉換,終於向著專業級的ETL工具邁了一大部。
由於相對DTS的改進非常大,開發和使用SSIS也就顯得比DTS略顯複雜。但是對於大型項目,實際上SSIS比DTS要簡單的多。
本文通過一個最簡單的例子,示範了開發和部署一個SSIS Package的整個過程。
1.開發
SQL Server2005對於用戶端的管理和開發工具做了高度的整合。對於資料庫的管理和T-SQL開發,使用新的SQL Server Management Studio;對於SSIS,SSRS(SQL Server Reporting Service),SSAS(SQL Server Analysis Service)的開發則使用SQL Server Business Intelligence Development Studio。
開啟Business Intelligence Development Studio,建立一個project,模板選擇Integration Services Project,項目名SSISTEST。
選擇Data Flow標籤頁,先建一個新的資料流。從Data Flow Sources中選擇一種源,這裡我們使用SQL Server資料庫來做為資料來源,所以選擇OLE DB Source,按下左鍵拖到工作區。這時由於該source還沒有設定串連資訊,所以表徵圖上有一個紅叉,表示其狀態是Invalid的。
沒有關係,我們先建立一個串連。在Connect Managers工作區右擊,選擇New OLE DB Connect,然後點New設定要串連的資料庫即可。
回到資料流工作區,雙擊OLE DB Source,在彈出的視窗中選擇對應的connect,Data Access Mode選擇table or view,然後執行來源資料表或者視圖,ok。
接下來,建一個目標資料。從Data Flow Destinations中選擇OLE DB Destination,拖到Data Flow工作區。
這個例子中,我只準備從一個源表將資料直接匯入到目標表,不做任何轉換。所以這時可以直接將OLE DB Source組件的輸出串連到OLE DB Destination組件的輸入。也就是拉動Source的綠色箭頭指向Destination。實際的ETL流程,還要對資料做很多轉換和清理的工作,可以通過添加各種Data Flow Transformations來實現複雜的轉換邏輯。
資料從Source串連到Destination後,雙擊OLE DB Destination設定串連資訊,如果目標和源不在同一個資料庫,那麼還需要在Connect Managers中建立一個OLE DB串連。同樣選擇好Data Access Mode和目標表的,如果目標表還不存在,可以New一個。在Mappings中,可以看到已經自動將source和destination的列做了映射,也可以再手動修改。
資料流設計完後,還需要設計控制流程。由於本例子中只有一個資料流,所以控制流程中只有一個組件;這樣,一個最簡單的SSIS Package就開發完成了。
2.部署
開發好的SSIS Package,還需要部署到要啟動並執行機器上。首先要產生部署工具。
在Project->SSIS Propertites,選擇Deployment Utility,將CreateDeploymentUtility屬性設定位TRUE。
然後重新Build工程,這時可以在工程目錄的bin下(在工程屬性中可以設定輸出的目錄,bin是預設目錄),產生了一個Deployment目錄,將該目錄複寫到要部署的機器上,然後右擊其中的SSISTEST.SSISDeploymentManifest,選擇Deploy,啟動部署嚮導,按照提示一步步將package部署到SQL Server中即可。
3.調度
建立一個Job,在Step中選擇類型為SQL Server Integration Services Package,然後執行要調度啟動並執行Pacage即可。
4.管理
用SQL Server Management Studio串連到Integration Service上即可管理已經部署的Package