SSIS資料庫匯入匯出設定& SQL Agent定期排程

由 Derek 發表於 二月 10, 2011 / 2 則評論

前言

本篇不是要說高深的SSIS 技巧,而是用實例的方式,說明如何應用 Visual Studio 的「Business Intelligence

Projects」來建立「Integration Service Project」,並且加入(deployment)SQL中,最後再以 SQL Agent

來排程做定期執行的工作。

 

如果環境是只有安裝 SQL2008 或是先安裝了SQL ,會發現怎麼系統上也安裝了 Visual Studio 呢?沒錯~當安裝

SQL 之後,會連帶的安裝 Business Intelligence (BI) 的開發環境。

 

一、 SSIS介紹

Microsoft SQL Server Integration Services (SSIS) 是一個平台,用於建立高效能資料整合方案,包括資料倉

儲的擷取、轉換和載入 (ETL) 封裝。

 

Integration Services 包含用於建立及偵錯封裝的圖形工具和精靈;用於執行工作流程功能 (例如 FTP 作業)

執行 SQL 陳述式或傳送電子郵件訊息的工作;用於擷取及載入資料的資料來源和目的地;用於清除、彙總、合併

和複製資料的轉換;用於管理 Integration Services 的管理服務,即 Integration Services 服務;以及用於

程式設計 Integration Services 物件模型的應用程式發展介面 (API)

 

Integration Services取代 Data Transformation Services (DTS),後者最初是當做SQL Server 7.0元件導入。

 

二、 設定說明

要完成 SSIS 的簡單應用,需要下列的步驟

1.  建立新的Project

2.  建立Package

3.  說明怎麼將此 Package 安裝到 SQL 裡,甚至是其他台機器

4.  說明怎麼利用 SQL Agent 來排定工作

 

 

1. 建立新的Project

1.1開啟 Visual Studio ,並「New Project

 

 

1.2專案類型 Project Type 選「Business Intelligence Projects」,樣版Templates 選「Integration Service Project

 

1.3預設開啟版面的樣式

 

 

 

1.4這個名稱最後會出現在 SSIS Stored Package 裡的 Package 名稱,先把Package .dtsx刪除

 

1.5右鍵點選SSIS封裝,裡的SSIS匯入和匯出精靈

 

1.5.1第一個出現的是資料來源,伺服器名稱輸入資料來源的IP,驗證請都使用SQL Server驗證,資料庫請選自己要匯入匯出的資料庫名稱

 

1.5.2第二個出現的就是資料目的地,伺服器名稱輸入資料目的地的IP,驗證請都使用SQL Server驗證,資料庫請選自己要匯入匯出的資料庫名稱

 

1.5.3選重一或多個資料表或檢視表複製資料

 

1.5.4選擇自行要匯入的資料表,後選擇下方編輯對應

 

1.5.5把先卸除再重新建立新目的地資料表。(此做法是為了防止若有要用SQL Server Agent做定期資料匯入到目的地資料庫時會產生重覆的資料)

 

1.5.6若有看到此畫面  可直接下一步  這是用來提醒的

 

1.5.7此畫面是告知做了什麼動作

 

1.5.8 接下來會需要一點時間,讓系統跑一下。請耐心等待,只要不要出現錯誤就可以了  完成後關閉

 

1.6Visual Studio上會看到此畫面

 

1.7這個名稱最後會出現在 SSIS Stored Package 裡的 Package 名稱,建議改成符合功能的名稱

 

1.7.1跟你確定是不是要改 Package Object 的名稱

 

1.8若要確定是否有誤可點選上方的偵錯測試看看  是否有問題  如果沒問題就完成SSIS的設定了

 


到這邊為止,以上是在說明如何建立SSISPackage

 

 

2. 建立Package

2.1首先,點選 Project 按滑鼠右鍵,選擇屬性(property

 

2.1.1然後把屬性「Deployment Utility」的「CreateDeploymentUtility」設定為 True

 

2.2 SSIS 選單選「Package Configurations」去設定 Package 的參數

 

咦?怎麼我的畫面是向下圖而非上圖那樣有「Package Configurations」可以選呢?別擔心,只要把滑鼠點回 Data Flow tag 就會出現了,在 Solution Explorer   Project 是看不到選項的。

 

2.3開啟選項後,就「Enable package Configurations」然後「Add…」新增

 

 

2.3.1 Configuration type:這邊選 XML 格式

 

2.3.2 這邊的設定很重要,因為建立好的 Package 可能會運用在許多地方,不單單是本機的SQL Server,所以需要把一些參數設成可以依不同 Server 做調整。

所以左邊框就是讓你勾選,當將此 Package 安裝在 SQL 裡,哪些項目還能做更改

 

2.3.3 完成後,就可按下 Finish 

 

2.3.4回到這一頁按下 Close 結束吧

 

 

2.4 Package 設定檔都設定好之後,就是要將他建立起來(建立安裝檔),選擇 Build 選單來建置。

 

2.5接著在專案的目錄下\ bin \ Deployment\ 會有相關的檔案

 

 

3. 說明怎麼將此 Package 安裝到 SQL 裡,甚至是其他台機器

3.1只需要執行上圖中「安裝檔」那個檔案,就會開始安裝

 

3.2  Package 可以以檔案形式,也可以直接 deployment SQL,這個例子我選用檔案方式。

 

3.3設定檔案存放的位置 (特別再說明一次,因為我前半段跟後半段在不同電腦執行,又忘記取相同的專案名稱,所以下圖中的專案目錄是 ISP1 ,如果您是跟著我前半段使用 SSIS_01 那麼這邊的目錄就會是 SSIS_01

 

3.4剛剛保留可以更改的變數,在此安裝步驟就可以依每台 Server 不同的環境,設定不同的值。

 

3.5安裝之後,你要用 Object Explorer 的「Integration Service」去連結他

 

3.6安裝好的 Package 會出現在 \Stored Package\File System\Project Name

 

3.7在這個 Package 裡有一些項目還可以再修改(例如輸出的檔案名稱)

 

3.8執行就會出現下圖的執行結果

沒有錯誤訊息出現  OK

如果你沒打算將此 Package 放入排程來定期處理,上述的步驟就完成了。

 

 

4. 說明怎麼利用 SQL Agent 來排定工作

接下來的設定請在SQL Server上設定

4.1新增工作

 

4.2設定新工作的名稱

 

4.3建立工作內容(Steps),Type 要選「SQL Server Integrated Service Package」 來呼叫剛剛建立的 Package

 

 

4.4 General 頁籤中 Package Source 選「File System」(因為我是用檔案的方式)

 

4.5檔案會放在 ~SQL\100\DTS\Package\專案

 

4.6然後到左邊「進階 Advanced」去設定當此工作完成後,該怎麼辦~當然就是給他結束囉,除非你還有下一個 Step

 

4.7接著在 Schedule 設定執行的時間

 

4.8可以在 SQL Agent Job 中查看,剛剛建立的新JOB是否產生了

 

最後只需在排程預定的執行時間後,觀察執行的狀況,如果正常 SQL Agent 就會繼續執行

 

PS.如果在執上有錯誤請查看錯誤訊息看是否為權限問題

如果是請到SQL Server Configuration Managerg 上調整SQL Server Angent 的使用權限或到services.msc 上一樣找到SQL Server Angent 來調整 

SQL Server Configuration Managerg

 

services.msc

 

使用 SSIS 真的還蠻容易在設定時出錯的,如果參數設定不完善,也會導致執行時錯誤。

 

 

關於作者

一個半路殺出來的傻小子,憑著一股傻勁努力的學習、嘗試、分享。希望能用自己微薄之力,替IT界和資訊界盡一點心力。單憑一己之力始終還是有限,歡迎和我有相同理念的夥伴一同加入一同努力。

評論

  1. Augus 說: 2011/10/23

    獲益非淺~~ thanks!! 

  2. Angel Carreno 說: 2011/05/29

    My partner and I really enjoyed reading this blog post, I was just itching to know do you trade featured posts? I am always trying to find someone to make trades with and merely thought I would ask.

發表評論至 Augus

*