SQL Server 2000中的數據轉換服務
為了完成數據合并、存檔和分析等任務;為了進行應用程序開發;為了進行數據庫或服務器升級,數據庫管理員經常需要導入、導出以及轉換數據。SQL Server 2000 中的數據轉換服務(DTS)為此提供了一組圖形化工具和可編程對象,能夠幫助管理員和開發人員解決從不同來源到單個或多個目標的數據轉移問題,包括數據提取、轉換以及合并。您可以將任務、工作流操作和限制條件組成 DTS數據包,然后安排定期或在特定事件發生時執行該數據包。本白皮書將介紹 DTS,給出一些能夠用于創建 DTS 解決方案的組件和服務,介紹如何使用 DTS Designer 來實施 DTS 解決方案,最后將介紹 DTS 應用程序開發。
本頁內容
DTS 簡介
使用 DTS Designer
保存 DTS 數據包的選項
將 DTS 作為應用程序開發平臺
DTS 簡介
大部分公司的數據都具有多種存儲格式和存儲位置。為了支持決策制定、提高系統性能或升級現有系統,經常必須將數據從一個數據存儲位置轉移到另一個位置。
Microsoft SQL Server 2000 數據轉換服務(DTS)為此提供了一系列的工具,您可以用來從不同來源將數據提取、轉換和合并到單個或多個目標。通過使用DTS工具,您可以根據公司的特殊需求創建定制的數據移動解決方案,正如下面這些情形:
• 您已經在早期版本的 SQL Server 或其他平臺(例如 Microsoft Access)上部署了一個數據庫應用程序。現在,新版本的應用程序需要 SQL Server 2000,而且需要更改數據庫架構,并轉換部分數據類型。
• 為了復制和轉換數據,可以構建一個 DTS 解決方案,將數據庫對象從原始數據源復制到 SQL Server 2000 數據庫中,同時重新設置數據欄并更改數據類型。您可以使用 DTS 工具來運行這個解決方案,或者將這個解決方案嵌入到您的應用程序中。
• 您必須將一些關鍵的 Microsoft Excel 電子表格合并到 SQL Server 數據庫中。很多部門在每月底創建電子表格,但是沒有設置日程安排來完成所有的電子表格。
• 為了合并電子表格數據,您可以構建一個 DTS 解決方案,使其在消息被發送到消息隊列時執行。這個消息將觸發 DTS,使其從電子表格中提取數據,執行各種定義的轉換,然后將數據裝載到 SQL Server 數據庫中。
• 您的數據倉庫中保存了有關業務操作的歷史數據,您要使用 Microsoft SQL Server 2000 分析服務來匯總這些數據。這個數據倉庫需要每天夜間從聯機事務處理(OLTP)數據庫進行更新。而您的 OLTP 系統一天 24 小時都在使用中,其性能十分關鍵。
您可以構建一個 DTS 解決方案,使用文件傳輸協議(FTP)將數據文件移動到本地驅動器中,將數據裝載到事實表中,然后使用分析服務對數據進行統計。您可以安排這個 DTS 解決方案每天夜間執行,也可以使用新的 DTS 日志選項來跟蹤這個過程所用的時間,使您能夠分析性能隨時間的變化。
DTS 是什么?
DTS 是一組數據轉換工具,您可以用來在一個或多個數據源(例如 Microsoft SQL Server、 Microsoft Excel 或 Microsoft Access)之間進行不同類型數據的導入、導出和轉換。其中的連通性通過數據訪問的開放式標準-OLE DB-來提供。ODBC(開放式數據庫連接)數據源由 OLE DB Provider for ODBC 來支持。
您可以將 DTS 解決方案創建為一個或多個數據包。每個數據包中可以包含一組有序的任務,定義所要執行的工作,也可以包含數據和對象的轉換、定義任務執行的工作流限制以及數據源和目標的連接等。DTS 數據包也提供記錄數據包執行細節、控制事務以及處理全局變量等服務。
下列工具可以用于創建和執行 DTS 數據包:
• 導入/導出向導(Import/Export Wizard)用于構建相對簡單的 DTS 數據包,支持數據遷移和簡單轉換。
• DTS Designer 圖形化地實施 DTS 對象模型,允許您創建具有大量功能的 DTS 數據包。
• DTSRun是一個命令提示符實用程序,用來執行已有的 DTS 數據包。
• DTSRunUI 是DTSRun的圖形化界面, 也允許傳遞全局變量和生成命令行。
• SQLAgent 不是一個 DTS 應用程序;但是 DTS 可以用它來安排數據包的執行。
您也可以使用 DTS 對象模型通過編程創建和運行數據包,構建定制任務以及構建定制轉換。
DTS 中的新內容?
Microsoft SQL Server 2000 引入了許多 DTS 增強和新特性:
• 新的 DTS 任務包括 FTP 任務、執行數據包任務、動態屬性任務以及消息隊列任務。
• 增強的日志功能記錄了每個數據包執行的信息,允許您擁有完整的執行歷史,并能查看任務中每個步驟的信息。您可以生成異常文件,包含可能由于錯誤而沒有執行的數據行。
• 您可以將 DTS 數據包保存為 Microsoft Visual Basic 文件。
• 新的多段數據泵允許高級用戶在不同階段定制數據轉換操作。同時,也可以使用全局變量作為查詢的輸入參數。
• 您可以在 DTS 轉換任務和執行 SQL 任務中使用參數化的源查詢。
• 您可以使用執行數據包任務,動態地將全局變量的取值從父數據包分配到子數據包。
返回頁首
使用 DTS Designer
DTS Designer 圖形化地實施 DTS 對象模型,允許您圖形化地創建 DTS 數據包。您可以使用 DTS Designer 來:
• 創建包含一個或多個步驟的簡單數據包。
• 創建包含復雜工作流的數據包,這些工作流中可包含使用有條件邏輯的多步操作、事件驅動的代碼或多個數據源的連接。
• 編輯已有的數據包。
DTS Designer 界面由工作區域、工具欄和菜單組成。其中工作區域用于構建數據包,工具欄包含有數據包元素,您可以將它們拖動到設計頁中,菜單中包含有工作流和數據包管理命令。
圖1:DTS Designer 界面
查看大圖。
在 DTS Designer 中,您可以將連接和任務拖動到設計頁中,并指定工作流執行的順序,從而輕松地創建功能強大的 DTS 數據包。下面的內容將定義任務、工作流、連接和轉換,并介紹如何使用 DTS Designer 輕松地實施 DTS 解決方案。
任務:定義數據包中的步驟
DTS 數據包中通常包含一個或多個步驟。每個任務定義了一個可能在數據包執行過程中執行的工作項目。您可以使用任務來:
• 轉換數據
轉換數據任務
用來將數據從來源移動到目標,可以選擇在數據上應用數據欄轉換。
數據驅動的查詢任務
用來對數據執行基于 Transact-SQL 的靈活操作,包括存儲過程以及 INSERT、UPDATE 或 DELETE 聲明。
?
平行數據泵任務 (1)
僅可用于編程,平行數據泵任務執行與轉換數據和數據驅動的查詢任務相同的功能,但是支持 OLE DB 2.5 及更新版本所定義的 “章節式” 數據行集。
• 復制和管理數據
批量插入任務
用于快速地將批量數據裝載到 SQL Server 表或視圖中。
Execute SQL 任務
用于在數據包執行過程中運行 SQL 語句。Execute SQL 任務也可以保存查詢的結果數據。
Copy SQL Server Objects 任務
用來將 SQL Server 對象從一個 SQL Server 安裝或實例中復制到另一個中。您可以復制數據和表等對象,也可以復制視圖和存儲過程等對象定義。
Transfer Database 任務(1)
用來將 SQL Server 數據庫從一個 SQL Server 7.0 或 SQL Server 2000 實例移動或復制到 SQL Server 2000 實例中。
Transfer Error Messages 任務(1)
用于將用戶指定的錯誤消息從 SQL Server 7.0 或 SQL Server 2000 實例復制到 SQL Server 2000 實例,這些錯誤消息是由sp_addmessage系統存儲過程所生成的。
Transfer Logins 任務(1)
用來將帳號從 SQL Server 7.0 或 SQL Server 2000 實例復制到 SQL Server 2000 實例。
Transfer Jobs 任務(1)
用來將作業從 SQL Server 7.0 或 SQL Server 2000 實例復制到 SQL Server 2000 實例。
Transfer Master Stored Procedures 任務(1)
用來將存儲過程從 SQL Server 7.0 或 SQL Server 2000 實例中的master數據庫復制到 SQL Server 2000 實例的 master數據庫。
• 從數據包中將任務作為作業運行
ActiveX 任務
用來編寫代碼,執行其他 DTS 任務中沒有的功能。
Dynamic Properties 任務(1)
用于在數據包運行時從 DTS 數據包外的來源處獲得數值,并將這些值分配給選定的數據包屬性。
Execute Package 任務(1)
用于從數據包中運行其他 DTS 數據包。
Execute Process 任務
用于運行可執行程序或批處理文件。
FTP 任務 (1)
用來從遠程服務器或 Internet 位置下載數據文件。
Message Queue 任務(1)
用來從 Microsoft 消息隊列發送和接受消息。
Send Mail 任務
用來發送電子郵件。
Analysis Services Processing 任務 (2)
用于處理一個或多個 SQL Server 2000 分析服務中所定義的對象。
Data Mining 任務 (1,2)
用于從 SQL Server 2000 分析服務所定義的數據挖掘模型對象中創建一個預測查詢和輸出表。
1 SQL Server 2000中新增。
2 僅適用于已安裝 SQL Server 2000 分析服務的情形。
您可以程序化地創建定制任務,然后使用 Register Custom Task(注冊定制任務)命令將它們集成到 DTS Designer 中。
為了說明這些任務的使用,在這里我們給出了一個包含兩個任務的簡單 DTS 數據包: Microsoft ActiveX 任務和 Send Mail 任務:
圖2:具有兩個任務的 DTS 數據包
ActiveX 任務可以駐留任何 ActiveX 腳本引擎,包括 Microsoft Visual Basic ing Edition (VB)、Microsoft J 或者 ActiveState ActivePerl(您可以從http://www.activestate.com/下載)。 Send Mail 任務可以發送消息,指出該數據包已經運行。請注意,這些任務是沒有順序的。在執行數據包時,ActiveX 任務和 Send Mail 任務同時運行。
工作流:設置任務優先級
當您在定義一組任務時,通常任務的執行是應該有一定順序的。如果這些任務擁有一定的順序,那么每個任務將稱為一個過程中的一個步驟。在 DTS Designer 中,您可以在 DTS Designer 設計頁中對任務進行操作,使用優先級限制來控制任務執行的順序。
優先級限制將數據包中的任務依次鏈接起來。下表給出了您可以在 DTS 中使用的優先級限制的類型。
優先級限制 說明
On Completion(完成后)
(藍色箭頭)
如果您希望任務 2 處于等待狀態,直至任務 1 完成(無論結果如何),那么就使用 On Completion 優先級限制將任務 1 鏈接到任務 2。
On Success(成功后)
(綠色箭頭)
如果您希望任務 2 處于等待狀態,直至任務 1 成功完成,那么就使用 On Success 優先級限制將任務 1 鏈接到任務 2。
On Failure(失敗后)
(紅色箭頭)
如果您希望任務 2 僅在任務 1 無法成功執行時才開始執行,那么就使用 On Failure 優先級限制將任務 1 鏈接到任務 2。
下圖給出了具有 On Completion 優先級限制的 ActiveX 任務和 Send Mail 任務。當 ActiveX 任務完成后(不論成功還是失。琒end Mail 任務都開始運行。
圖3:具有 On Completion 優先級限制的 ActiveX 任務和 Send Mail 任務
您可以配置不同的 Send Mail 任務,一個用于 On Success 限制,另一個用于 On Failure 限制。這兩個 Send Mail 任務可以根據 ActiveX 的成功或失敗來發送不同的郵件。
圖4:郵件任務
您也可以在一個任務上應用多個優先級限制。例如, Send Mail 任務"Admin Notification"可以具有來自腳本#1的 On Success 限制和來自腳本#2 的 On Failure 限制。在這種情況下,DTS 認為其使用邏輯"AND"關系。因此為了發送 Admin Notification 郵件,腳本#1必須成功執行,而腳本#2 必須失敗。
圖5:同一任務多個優先級限制的示例
連接:訪問和移動數據
為了成功地執行復制和轉換數據的 DTS 任務,DTS 數據包必須與其來源和目標之間建立有效的連接,同樣需要連接到其他數據源(例如查詢表)
在創建數據包時,您可以從有效 OLE DB 提供商和 ODBC 驅動程序列表中選擇連接類型,對連接進行配置?捎玫倪B接類型包括:
• Microsoft 數據訪問組件(MDAC)驅動程序
Microsoft OLE DB Provider for SQL Server
Microsoft 數據鏈接
Microsoft ODBC Driver for Oracle
• Microsoft Jet 驅動程序
dBase 5
Microsoft Access
HTML 文件(來源)
Microsoft Excel 97-2000
Paradox 5.X
• 其他驅動程序
文本文件(來源)
文本文件(目標)
其他連接
DTS 允許您使用任何 OLE DB 連接。連接工具欄中的圖標為常用連接提供了方便的訪問方式。
下圖介紹了一個具有兩個連接的數據包。數據被從一個 Access 數據庫(來源連接)復制到 SQL Server 生產數據庫(目標連接)。
圖6:具有兩個連接的數據包示例
查看大圖。
這個數據包的第一步是一個執行 SQL 任務,該任務檢查是否已經存在目標表。如果已經存在,這個表將被刪除并重新創建。在成功的完成了執行 SQL 任務后,數據在第二步中被復制到 SQL Server 數據庫。如果復制操作失敗,則在第三步中發送一封電子郵件。
數據泵:轉換數據
DTS 數據泵是一個 DTS 對象,用來驅動數據的導入、導出和轉換。在轉換數據、數據驅動的查詢以及平行數據泵任務中將使用這個數據泵。這些任務將在來源和目標連接中創建數據行組,然后創建數據泵實例,將數據行在來源和目標之間移動。在數據行被復制時,對每一行進行數據轉換。
下圖的步驟 2 中,在 Access DB 任務和 SQL Production DB 任務之間使用了一個轉換數據任務。轉換數據任務是兩個連接之間的灰色箭頭。
圖7:轉換數據任務的示例
查看大圖。
為了定義從來源連接收集到的數據,您可以為這個轉換任務創建一個查詢。DTS 支持參數化的查詢,允許您在查詢執行時定義查詢值。
您可以在該任務的屬性對話框中鍵入這個查詢;蛘呤褂脭祿D換服務查詢設計器(Data Transformation Services Query Designer),該工具可以用來為 DTS 任務圖形化地創建查詢。下圖中,使用查詢設計器構建了一個將三個表加入到pubs數據庫中的查詢。
圖8:數據轉換服務查詢設計器界面
查看大圖。
在轉換任務中,您也可以定義對數據做出的更改。下表解釋了 DTS 提供的內置轉換功能。
轉換 說明
復制數據欄
用來直接將數據從來源復制到目標數據欄中,對數據不進行任何轉換。
ActiveX 腳本
用來構建定制的轉換。請注意,由于轉換是逐行進行的,因此ActiveX 腳本可能會影響 DTS 數據包的執行速度。
日期事件字符串
用來將來源數據欄中的日期或事件轉換為目標數據欄中不同的格式。
小寫字母字符串
用來將來源數據欄中的小寫字母轉換(如果需要)為目標數據欄的數據類型。
大寫字母字符串
用來將來源數據欄中的所有大寫字母轉換(如果需要)為目標數據欄的數據類型。
字符串中段
用來從來源數據欄中提取子字符串,將其轉換,然后將結果復制到目標數據欄中。
修剪字符串
用于刪除來源數據欄中字符串前、后和中間的空白,并將結果復制到目標數據欄中。
讀取文件
用來打開來源數據欄中所指定的文件的內容,并將其內容復制到目標數據欄中。
寫入文件
用來將來源數據欄(數據)的內容復制到文件中,該文件的路徑由第二個來源數據欄(文件名)指定。
您也可以通過編程創建自己的定制轉換。創建定制轉換的最快方法是使用活動模板庫(Active Template Library,ATL)定制轉換模板,該模板包含在 SQL Server 2000 DTS 示例程序中。
數據泵錯誤日志
SQL Server 2000中 擁有一種記錄轉換錯誤的新方法。您可以定義三種異常日志文件,用于數據包執行過程:錯誤文本文件、來源錯誤數據行文件以及目標錯誤數據行文件。
• 常規錯誤信息被寫入到錯誤文本文件中。
• 如果轉換過程失敗,那么來源數據行將出現錯誤,并將該行寫入到來源錯誤數據行文件中。
• 如果插入過程失敗,那么目標數據行將出現錯誤,并將該行寫入到目標錯誤數據行文件中。
異常日志文件被定義在轉換數據的任務中。每個轉換任務可以擁有它自己的日志文件。
數據泵階段
在默認情況下,數據泵只有一個階段:數據行轉換。這個階段就是您所配置的在轉換數據任務、數據驅動的查詢任務以及平行數據泵任務中的數據欄轉換,而不選擇階段。
多數據泵階段功能是 SQL Server 2000 中所新增的。通過在 SQL Server Enterprise Manager 中選中多段數據泵選項,您可以在操作過程中的不同地方訪問數據泵,添加功能。
在將一行數據從來源復制到目標時,數據泵按照下圖所示的基本程序進行操作。
圖9:數據泵過程
查看大圖。
在數據泵處理完最后一行數據后,任務完成,數據泵操作結束。
如果高級用戶需要在數據包中添加功能,使其支持任何數據泵階段,他可以這樣做:
• 為每個定制的數據泵階段編寫一個ActiveX腳本階段。如果您使用ActiveX腳本功能來定制數據泵階段,不需要任何數據包以外的代碼。
• 在 Microsoft Visual C++ 中創建 COM 對象,定制所選中的數據泵階段。您在數據包以外開發這個程序,轉換的每個所選中的階段都將調用這個程序。與訪問數據泵階段的 ActieX 腳本方法不同的是,ActiveX 腳本方法為每個選中的階段使用不同的功能和入口點,而這種方法提供了單一入口點,由多個數據泵階段在任務執行過程中調用。
返回頁首
保存 DTS 數據包的選項
下列選項可以保存 DTS 數據包:
• Microsoft SQL Server
如果您希望在任何網絡中的 SQL Server 實例中保存數據包,請將您的 DTS 數據包保存在 Microsoft SQL Server 上,并保留這些數據包的清單,在數據包開發過程中添加和刪除數據包版本。
• SQL Server 2000 元數據服務
如果您計劃跟蹤數據包版本、元數據和數據血統信息,請將 DTS 數據包保存在元數據服務上。
• 結構化的存儲文件
如果您需要在網絡中復制、移動和發送數據包,而不想把數據包存儲到 Microsoft SQL Server 數據庫中,請將 DTS 數據包保存為結構化的存儲文件。
• Microsoft Visual Basic
如果您希望將其集成到 Visual Basic 程序中,或作為 DTS 應用程序開發的原型,請將由 DTS Designer 和 DTS 導入/導出向導創建的 DTS 數據包保存為 Microsoft Visual Basic 文件。
返回頁首
將 DTS 作為應用程序開發平臺
DTS Designer 提供了多種數據移動任務的解決方案。DTS 通過提供對 DTS 對象模型的程序化訪問,擴展了許多可用的解決方案。使用Microsoft Visual Basic、Microsoft Visual C++ 或其他支持 COM 的應用程序開發系統 ,您可以為您的環境開發一個定制的 DTS 解決方案,使用圖形工具中所不支持的功能。
DTS 以多種不同的方式為開發人員提供支持:
• 構建數據包
您可以開發極其復雜的數據包,訪問對象模型中的所有功能,而不需要使用 DTS Designer 或 DTS 導入/導出向導。
• 擴展數據包
您可以通過定制的任務和轉換來增加新的功能,這些任務和轉換是專門為您的業務定制的,并且能在DTS中重復使用。
• 執行數據包
DTS 數據包的執行不需要基于任何所提供的工具,可以通過 COM 事件通過編程執行 DTS 數據包和顯示過程,允許構建嵌入式或定制的 DTS 執行環境。
所提供的 DTS 程序示例能夠幫助您了解 DTS 編程。這些示例與 SQL Server 2000 一同安裝。
如果您要開發 DTS 應用程序,那么您可以重新分配 DTS 文件。更多信息,請參考 SQL Server 2000 光盤的 Redist.txt 文件。
更多信息
Microsoft SQL Server 2000 Books Online中擁有許多有關 DTS、使用DTS應用程序以及構建定制解決方案的信息。其他信息,請參考下列資源:
• Microsoft SQL Server Web站點,地址為http://www.microsoft.com/china/sql/。
• Microsoft SQL Server Developer Center,地址為http://msdn.microsoft.com/library/default.asp?URL=/sqlserver/。
• SQL Server Magazine,地址為http://www.sqlmag.com/。
• Microsoft.public.sqlserver.server和 microsoft.public.sqlserver.datawarehouse新聞組,地址為 news://news.microsoft.com。
• 關于SQL Server的微軟官方課程(Microsoft Official Curriculum)。如需了解最新的課程信息,請訪問Microsoft Training and Services Web站點,地址為http://www.microsoft.com/traincert/default.asp
本文檔所提供的信息資料僅代表Microsoft公司在信息發布當日就研討活動所圍繞的問題持有的臨時觀點。鑒于Microsoft公司必須針對瞬息萬變的市場狀況不斷做出相應調整,故而,本文檔內容不應被解釋為Microsoft方面所做出的任何承諾,與此同時,Microsoft也無法在發布之日后繼續保證文件所含信息的準確性。
本白皮書僅供用于信息參考目的。Microsoft并未在本文檔中提供任何形式的保證、明示或暗示。
遵守所有適用版權法律是文檔使用者所應承擔的義務。Microsoft公司雖未在版權保護下就與本文檔相關的權利做出任何限定,但是,任何人未經Microsoft公司書面授權許可,均不得出于任何目的、以任何形式、利用任何手段(電子、機械、影印、錄音等)將本文檔的任何組成部分制作成拷貝、存儲或引入檢索系統、亦或向任何對象進行傳送。
Microsoft公司可能就本文檔所涉及的主題擁有專利、專利申請、商標、版權或其它形式的知識產權。除非已同Microsoft公司簽訂書面許可協議,并根據協議條款獲得明確授權,任何出示本文檔的行為均無法使您具備針對上述專利、商標、版權或其它知識產權加以利用的許可權限。
2000 Microsoft Corporation. 保留所有權利.
Microsoft、ActiveX、J、Visual Basic和Visual C++ 均系Microsoft公司在美國和/或其它國家所擁有的注冊商標或商標。
關鍵字:SQL Server、服務器、數據轉換服務
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解