萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> sql server教程 >> 深入分析SQL Server的數據轉換服務

深入分析SQL Server的數據轉換服務

  在使用 sql server 的過程中,由於經常需要從多個不同地點將數據集中起來或向多個地點復制數據,所以數據的導出,導入是極為常見的操作.我們可以使用 BCP 命令來完成這一任務,但是記住 BCP 的命令格式是一件令人頭痛的苦差事,雖然你可以查看幫助文件,所以我們需要功能強大操作簡單的工具來完成這一任務,數據轉換服務 DTS 提供了這種支持。因此本文將介紹 DTS 的基本情況、討論 DTS 的各個構建組件以及如何完成數據轉換服務。

  數據轉換服務簡介

  為了支持企業決策,許多組織都需將數據集中起來進行分析。但是通常數據總是以不同的格式存儲在不同的地方。有的可能是文本文件,有的雖然具有表結構但不屬於同一種數據源,這些情況極大地妨礙數據的集中處理。SQL Server 為我們提供了令人欣慰的組件,即Data Transformation Services( DTS)。 DTS 本身包含多個工具並提供了接口來實現在任何支持 OLE DB 的數據源間導入、導出或傳遞數據,並使這一工作變得簡單高效。這意味著不僅可以在SQL Server 數據源間進行數據的轉儲,而且可以把 Sybase, Oracle, Informix 下的數據傳遞到 SQL Server。

  利用 Data Transformation Services (DTS) 可能在任何 OLE DB、 ODBC 驅動程序的數據源或文本文和 SQL Server 之間導入、導出或傳遞數據。具體表現在: 數據的導入、導出服務

  通過讀寫數據在不同應用程序間交換數據。例如,可將文本文件或 Microsoft Access 數據庫導入到 SQL Server, 也可以把數據從 SQL Server 導出到任何 OLE DB 數據源。 轉換數據

  所謂傳遞是指在數據未到達目標數據源前而對數據采取的系列操作。比如 DTS 允許從源數據源的一列或多列計算出新的列值,然後將其存儲在目標數據庫中。

  傳遞數據庫對象

  在異構數據源情況下 DTS, 的內置工具只能在數據源間傳遞表定義和數據。如果要傳遞其它數據庫對象,如索引、約束、視圖時,必須定義一個任務,從而在目標數據庫上執行那些包含在任務中的 SQL 語句,SQL 語句是被用來創建這些數據庫對象的。 18.1.2 DTS 結構

  DTS 將數據導入、導出或傳遞定義成可存儲的對象,即包裹或稱為包。每一個包都是包括一個或具有一定順序的多個任務的工作流。每個任務可以將數據從某一數據源拷貝至目標數據源或使用 Active 腳本轉換數據或執行 SQL 語句或運行外部程序。也可以在 SQL Server 數據源間傳遞數據庫對象。

  包對象用來創建並存儲步驟,這些步驟定義了一系列任務執行的順序以及執行任務的必要細節。包對象中還包括源列、目標列以及有關在數據傳遞過程中如何操縱數據的信

  包可以存儲在 DTS COM 結構的存儲文件中、msdb 數據庫中、或 Microsoft Repository 中。

  可以通過以下工具來運行包,它們是:dtsrun 工具,DTS Designer, DTS 的導入、導出向導,SQL Server Agent 來運行規劃作業,使用 Execute 方法調用 DTS 包對象的 COM 應用程序。

  包是頂層對象,它包含三種底層對象:連接、任務、步驟。

  連接

  連接定義了有關源和目標數據(數據源或文件)的信息這些信息包括數據格式和位置,以及安全認證的密碼。DTS 包可不包含或包含多個連接。使用連接的任務有:

  DTS Data Pump 任務執行 SQL 任務 數據驅動查詢任務 定制任務;

  有三種類型的連接對象 數據源連

  數據源連接定義了有關源和目標 OLE DB 數據源的信息。這些信息包括服務器名稱、數據格式和位置,以及安全認證的密碼。第一個使用連接的任務負責創建該連接。如果使用 ODBC 的 OLE DB 提供者,則連接也可以定義 ODBC 數據源信息。

  文件連接定義了有關源和目標文件的信息。這些信息包括文件格式和位置。 Microsoft 數據連接對象

  Microsoft 數據連接對象或者加載數據連接文件(*.udl) 或者為 OLE DB 提供者設置數據連接文件的屬性。

  任務

  每個 DTS 包都含有一個或多個任務,每個任務都是數據轉換(傳遞)處理的工作項目。任務的種類包括: 執行 SQL 任務:即執行 SQL 語句; Data Pump 任務該任務:為 Data Pump 操作定義了源和目標數據源以及數據轉換。Data Pump 從源和目標OLE DB 數據源間拷貝並轉換數據; ActiveX 腳本執行:ActiveX, VB, Jscript 或Perscript 腳本。凡是腳本支持的操作都可以執行; 執行處理任務(Execute Process task): 指執行外部程序; 批量插入指執行:SQL Server 批拷貝操作; 發送郵件:使用SQL Mail 發送尋呼或郵件; 數據驅動查詢:執行 OLE DB 數據源間的高級數據傳遞; 轉換 SQL Server 對象:即從 SQL Server OLE DB 數據源向另外的同類數據源復制對象,例如表、索引、視圖。

  步驟

  步驟對象定義了任務執行的順序,以及某一任務的執行是否依賴於前一個任務的結果。如果某一任務不與步驟對象相關聯,則其將無法被執行。可以為某一步驟設定運行條件,使其只在一定條件才被執行,為了提高執行的性能,也可以並行執行多個步驟。

  步驟的一個重要特性是步驟優先權約束。步驟優先權約束定義了前一步必須滿足哪些條件之後才會執行當前步驟,通過步驟優先權約束可以控制任務的執行順序。有三種類型的優先權約束:

  完成:表示前一步驟完成後就執行當前步驟,而不管其成功與否; 成功:表示前一步驟只有成功執行才執行當前步驟; 失敗:表示前一步驟執行失敗時才執行當前步驟。某一步驟可有多個優先權約束,只有前一步滿足所有的約束後,才能執行當前步驟。

關鍵詞:

copyright © 萬盛學電腦網 all rights reserved