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