2013年7月9日 星期二

SSIS

DTS

Data Transformation Services (DTS) 是 SQL 2000 中用來建立封裝,進行資料轉移的服務。

SSIS

Microsoft Integration Services (SSIS) 是 SQL 2005 才開始提供服務,它取代了 SQL 2000 的 DTS 功能,可用來建立企業級資料整合和資料轉換方案的平台。 您可利用 SSIS 來解決複雜的商務問題:複製或下載檔案、傳送電子郵件訊息以回應事件、更新資料倉儲、清理和採礦資料,以及管理 SQL Server 物件和資料。

DTS 由 SQL 2005 開始由 SSIS 取代,若是想要在 SQL 2005, SQL 2008 上繼續支援 DTS 功能,則必須安裝適當的回溯相容元件。但是,SQL 2012 就不再支援 DTS 功能。 如何在 SQL 2008 中繼續使用 DTS ,可參考這篇教學:匯入與執行 DTS 封裝檔案,以 SQL Server 2008 R2 x64 版本為例

BIDS

SQL 2008 提供 Business Intelligence Development Studio (BIDS) 這個工具,可用於開發「商務智慧方案」。 不過,它只整合在 VS 2008 的開發環境,無法在 VS 2010 中使用。

商務智慧方案包括:

  • Reporting Service 專案
  • Analysis Service 專案
  • Integration Service 專案

所以,使用 BIDS 可以用來建立及維護 Integration Services 專案

SSDT

到了 VS2010 ,微軟又提供了新的封裝開發工具,命名為 SQL Server Data Tools(SSDT)。 不過它並不包含在 VS2010 之中,你必須另外下載安裝。 你可以使用 SSDT 建立與維護 Integration Services、Analysis Services、Reporting Services 等專案類型; 也可以使用 SSDT 開發資料庫專案,進行資料庫的建置、偵錯、維護和重構等工作。

這個工具到了 VS2012 或 SQL2012 已內建在安裝程序裡。

了解 Integration Services 服務

Integration Services 會安裝 Integration Services 服務,此服務可讓您在 SQL Server Management Studio 中執行以下工作:

  • 管理階層式檢視中的 Integration Services 封裝和資料夾。封裝可以儲存在 Database Engine 的執行個體或檔案系統中。
  • 監視在電腦上執行之 Integration Services 封裝的執行。

在一部電腦上只能安裝單一 Integration Services 服務的執行個體。此服務並非特定 Database Engine 執行個體特有的。您可以使用執行此服務所在的電腦名稱來連接此服務。

PS. 建立、儲存及執行 Integration Services 封裝時,不需要 Integration Services 服務。

在 VS2008 中建立 Integration Services 專案

步驟 1:建立 Integration Services 專案

新增 Integration Services 專案

下圖為新增的 Integration Services 專案,預設專案裡頭會有一個空白的 SSIS 封裝,副檔名為 .dtsx

步驟 2:執行精靈建立基本封裝

利用「匯入匯出精靈」,可以簡單建立一個「資料流程工作」。

依序完成匯入匯出精靈中的步驟後,就可以看到下面的結果。

步驟 3:測試 Integration Services 封裝

你可以由方案總管中的選單執行封裝

下圖是執行失敗的畫面,你可以在輸出視窗中看到錯誤訊息。

步驟 4:在封裝中加入「 執行 SQL 工作」

上面範例,我們設定將 DB1.dbo.Customers 匯出到 DB2.dbo.Customers ,但是由於 DB2.dbo.Customers 已有舊資料,所以發生 Key 值重複的錯誤問題。 為了解決這個問題,我們可以在資料匯出資料前,將目標資料表中的資料先行刪除,以避免 Key 值重複問題。 這時候就可以在匯出作業前加入一個「 執行 SQL 工作」的步驟。 並設定二個步驟執行的優先順序。

加入「 執行 SQL 工作」

執行編輯

設定 Connection 以及 SQLStatement

此時就可以看到執行成功的畫面

如何將 IS 專案設定排程

在上一節建立的 IS 專案中,若我們希望這個封裝內容,可以定時的被執行,必須先將它怖署到 SQL Server 中,再交由 SQL Server Agent 來排程執行。

匯入封裝檔 (.dtsx) 到 Integration Services

首先,你可以在專案的輸出路徑中找到編譯完成的封裝檔(.dtsx)

連接到Integration Serices


在 File System 節點上,點選匯入封裝

選擇 [檔案系統] 的方式來匯入封裝,並設定封裝檔的路徑

匯入完成後的結果。

PS. 將封裝匯入,可以選擇儲存在 SQL Server msdb 資料庫的 sysssispackages 資料表中,也可以選擇儲存在檔案系統中。

設定執行排程

要設定排程執行封裝,當然就要透過「SQL Server Agent 作業」,或者利用「維護計畫」來自動建立「SQL Server Agent 作業」。

1。新增 Agent 作業

2。在「一般」頁籤設定服務作業名稱

3。在「步驟」頁籤,新增步驟

上面這張圖有二個地方要補充說明一下:

一、在執行身分下方的一般頁籤中,因為我們要執行先前匯入的封裝,所以選擇「SSIS 封裝存放區」當做封裝來源,並選定要執行的封裝。

二、在這個設定之中,因為我們要讓 SQL Server Agent Job 去執行一個前一個小節所匯入的封裝作業,該封裝在匯入之後,會被存放在 C:\Program Files\Microsoft SQL Server\100\DTS\Packages\ 目錄裡。 所以 SQL Server Agent 的預設執行帳戶「SQLServerSQLAgentUser$」必須對這個目錄具有讀取的權限,才可以正常執行。預設是沒有權限的,所以執行時會產生錯誤。 下面二個方法都可以解決這個問題:

  1. 直接授與「SQLServerSQLAgentUser$」這個使用者對該目錄的讀取權限。
  2. 也可以透過 SQL Agent Proxy 來執行。底下示範如何新增一個 SQL Agent Proxy 的方法。

設定 SQL Agent Proxy

新增認證


新增 Proxy


在 Proxy 中設定認證名稱,並設定有效子系統

最後你就可以在 Job 的執行身份中,挑選這個 Proxy

上面的設定是說: 使用指定的 Proxy 身份來執行這個 Job ,而這個 Proxy 使用指定的認證,因為該認證會對應到 Administrator ,所以自然就有權利讀取 C:\Program Files\Microsoft SQL Server\100\DTS\Packages\ 這個目錄。

4。在「排程」頁籤設定執行排程

5。手動執行 Agent Job

6。將 Agent Job 停用

沒有留言:

張貼留言