摘要: 為了完成數(shù)據(jù)合并、存檔和分析等任務(wù);為了進行應(yīng)用程序開發(fā);為了進行數(shù)據(jù)庫或服務(wù)器升級,數(shù)據(jù)庫管理員經(jīng)常需要導(dǎo)入、導(dǎo)出以及轉(zhuǎn)換數(shù)據(jù)。SQL Server 2000 中的數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)為此提供了一組圖形化工具和可編程對象,能夠幫助管理員和開發(fā)人員解決從不同來源到單個或多個目標(biāo)的數(shù)據(jù)轉(zhuǎn)移問題,包括數(shù)據(jù)提取、轉(zhuǎn)換以及合并。您可以將任務(wù)、工作流操作和限制條件組成 DTS數(shù)據(jù)包,然后安排定期或在特定事件發(fā)生時執(zhí)行該數(shù)據(jù)包。本白皮書將介紹 DTS,給出一些能夠用于創(chuàng)建 DTS 解決方案的組件和服務(wù),介紹如何使用 DTS Designer 來實施 DTS 解決方案,最后將介紹 DTS 應(yīng)用程序開發(fā)。
本頁內(nèi)容
DTS 簡介
大部分公司的數(shù)據(jù)都具有多種存儲格式和存儲位置。為了支持決策制定、提高系統(tǒng)性能或升級現(xiàn)有系統(tǒng),經(jīng)常必須將數(shù)據(jù)從一個數(shù)據(jù)存儲位置轉(zhuǎn)移到另一個位置。
Microsoft SQL Server 2000 數(shù)據(jù)轉(zhuǎn)換服務(wù)(DTS)為此提供了一系列的工具,您可以用來從不同來源將數(shù)據(jù)提取、轉(zhuǎn)換和合并到單個或多個目標(biāo)。通過使用DTS工具,您可以根據(jù)公司的特殊需求創(chuàng)建定制的數(shù)據(jù)移動解決方案,正如下面這些情形:
| ? |
您已經(jīng)在早期版本的 SQL Server 或其他平臺(例如 Microsoft Access)上部署了一個數(shù)據(jù)庫應(yīng)用程序。現(xiàn)在,新版本的應(yīng)用程序需要 SQL Server 2000,而且需要更改數(shù)據(jù)庫架構(gòu),并轉(zhuǎn)換部分?jǐn)?shù)據(jù)類型。
|
| ? |
為了復(fù)制和轉(zhuǎn)換數(shù)據(jù),可以構(gòu)建一個 DTS 解決方案,將數(shù)據(jù)庫對象從原始數(shù)據(jù)源復(fù)制到 SQL Server 2000 數(shù)據(jù)庫中,同時重新設(shè)置數(shù)據(jù)欄并更改數(shù)據(jù)類型。您可以使用 DTS 工具來運行這個解決方案,或者將這個解決方案嵌入到您的應(yīng)用程序中。
|
| ? |
您必須將一些關(guān)鍵的 Microsoft Excel 電子表格合并到 SQL Server 數(shù)據(jù)庫中。很多部門在每月底創(chuàng)建電子表格,但是沒有設(shè)置日程安排來完成所有的電子表格。
|
| ? |
為了合并電子表格數(shù)據(jù),您可以構(gòu)建一個 DTS 解決方案,使其在消息被發(fā)送到消息隊列時執(zhí)行。這個消息將觸發(fā) DTS,使其從電子表格中提取數(shù)據(jù),執(zhí)行各種定義的轉(zhuǎn)換,然后將數(shù)據(jù)裝載到 SQL Server 數(shù)據(jù)庫中。
|
| ? |
您的數(shù)據(jù)倉庫中保存了有關(guān)業(yè)務(wù)操作的歷史數(shù)據(jù),您要使用 Microsoft SQL Server 2000 分析服務(wù)來匯總這些數(shù)據(jù)。這個數(shù)據(jù)倉庫需要每天夜間從聯(lián)機事務(wù)處理(OLTP)數(shù)據(jù)庫進行更新。而您的 OLTP 系統(tǒng)一天 24 小時都在使用中,其性能十分關(guān)鍵。
您可以構(gòu)建一個 DTS 解決方案,使用文件傳輸協(xié)議(FTP)將數(shù)據(jù)文件移動到本地驅(qū)動器中,將數(shù)據(jù)裝載到事實表中,然后使用分析服務(wù)對數(shù)據(jù)進行統(tǒng)計。您可以安排這個 DTS 解決方案每天夜間執(zhí)行,也可以使用新的 DTS 日志選項來跟蹤這個過程所用的時間,使您能夠分析性能隨時間的變化。
|
DTS 是什么?
DTS 是一組數(shù)據(jù)轉(zhuǎn)換工具,您可以用來在一個或多個數(shù)據(jù)源(例如 Microsoft SQL Server、 Microsoft Excel 或 Microsoft Access)之間進行不同類型數(shù)據(jù)的導(dǎo)入、導(dǎo)出和轉(zhuǎn)換。其中的連通性通過數(shù)據(jù)訪問的開放式標(biāo)準(zhǔn)-OLE DB-來提供。ODBC(開放式數(shù)據(jù)庫連接)數(shù)據(jù)源由 OLE DB Provider for ODBC 來支持。
您可以將 DTS 解決方案創(chuàng)建為一個或多個數(shù)據(jù)包。每個數(shù)據(jù)包中可以包含一組有序的任務(wù),定義所要執(zhí)行的工作,也可以包含數(shù)據(jù)和對象的轉(zhuǎn)換、定義任務(wù)執(zhí)行的工作流限制以及數(shù)據(jù)源和目標(biāo)的連接等。DTS 數(shù)據(jù)包也提供記錄數(shù)據(jù)包執(zhí)行細(xì)節(jié)、控制事務(wù)以及處理全局變量等服務(wù)。
下列工具可以用于創(chuàng)建和執(zhí)行 DTS 數(shù)據(jù)包:
| ? |
導(dǎo)入/導(dǎo)出向?qū)В↖mport/Export Wizard)用于構(gòu)建相對簡單的 DTS 數(shù)據(jù)包,支持?jǐn)?shù)據(jù)遷移和簡單轉(zhuǎn)換。
|
| ? |
DTS Designer 圖形化地實施 DTS 對象模型,允許您創(chuàng)建具有大量功能的 DTS 數(shù)據(jù)包。
|
| ? |
DTSRun是一個命令提示符實用程序,用來執(zhí)行已有的 DTS 數(shù)據(jù)包。
|
| ? |
DTSRunUI 是DTSRun的圖形化界面, 也允許傳遞全局變量和生成命令行。
|
| ? |
SQLAgent 不是一個 DTS 應(yīng)用程序;但是 DTS 可以用它來安排數(shù)據(jù)包的執(zhí)行。
|
您也可以使用 DTS 對象模型通過編程創(chuàng)建和運行數(shù)據(jù)包,構(gòu)建定制任務(wù)以及構(gòu)建定制轉(zhuǎn)換。
DTS 中的新內(nèi)容?
Microsoft SQL Server 2000 引入了許多 DTS 增強和新特性:
| ? |
新的 DTS 任務(wù)包括 FTP 任務(wù)、執(zhí)行數(shù)據(jù)包任務(wù)、動態(tài)屬性任務(wù)以及消息隊列任務(wù)。
|
| ? |
增強的日志功能記錄了每個數(shù)據(jù)包執(zhí)行的信息,允許您擁有完整的執(zhí)行歷史,并能查看任務(wù)中每個步驟的信息。您可以生成異常文件,包含可能由于錯誤而沒有執(zhí)行的數(shù)據(jù)行。
|
| ? |
您可以將 DTS 數(shù)據(jù)包保存為 Microsoft Visual Basic 文件。
|
| ? |
新的多段數(shù)據(jù)泵允許高級用戶在不同階段定制數(shù)據(jù)轉(zhuǎn)換操作。同時,也可以使用全局變量作為查詢的輸入?yún)?shù)。
|
| ? |
您可以在 DTS 轉(zhuǎn)換任務(wù)和執(zhí)行 SQL 任務(wù)中使用參數(shù)化的源查詢。
|
| ? |
您可以使用執(zhí)行數(shù)據(jù)包任務(wù),動態(tài)地將全局變量的取值從父數(shù)據(jù)包分配到子數(shù)據(jù)包。
|
使用 DTS Designer
DTS Designer 圖形化地實施 DTS 對象模型,允許您圖形化地創(chuàng)建 DTS 數(shù)據(jù)包。您可以使用 DTS Designer 來:
| ? |
創(chuàng)建包含一個或多個步驟的簡單數(shù)據(jù)包。
|
| ? |
創(chuàng)建包含復(fù)雜工作流的數(shù)據(jù)包,這些工作流中可包含使用有條件邏輯的多步操作、事件驅(qū)動的代碼或多個數(shù)據(jù)源的連接。
|
| ? |
編輯已有的數(shù)據(jù)包。
|
DTS Designer 界面由工作區(qū)域、工具欄和菜單組成。其中工作區(qū)域用于構(gòu)建數(shù)據(jù)包,工具欄包含有數(shù)據(jù)包元素,您可以將它們拖動到設(shè)計頁中,菜單中包含有工作流和數(shù)據(jù)包管理命令。
在 DTS Designer 中,您可以將連接和任務(wù)拖動到設(shè)計頁中,并指定工作流執(zhí)行的順序,從而輕松地創(chuàng)建功能強大的 DTS 數(shù)據(jù)包。下面的內(nèi)容將定義任務(wù)、工作流、連接和轉(zhuǎn)換,并介紹如何使用 DTS Designer 輕松地實施 DTS 解決方案。
任務(wù):定義數(shù)據(jù)包中的步驟
DTS 數(shù)據(jù)包中通常包含一個或多個步驟。每個任務(wù)定義了一個可能在數(shù)據(jù)包執(zhí)行過程中執(zhí)行的工作項目。您可以使用任務(wù)來:
| ? |
轉(zhuǎn)換數(shù)據(jù)
|

|
轉(zhuǎn)換數(shù)據(jù)任務(wù)
|
用來將數(shù)據(jù)從來源移動到目標(biāo),可以選擇在數(shù)據(jù)上應(yīng)用數(shù)據(jù)欄轉(zhuǎn)換。
|
|

|
數(shù)據(jù)驅(qū)動的查詢?nèi)蝿?wù)
|
用來對數(shù)據(jù)執(zhí)行基于 Transact-SQL 的靈活操作,包括存儲過程以及 INSERT、UPDATE 或 DELETE 聲明。
|
|
|
平行數(shù)據(jù)泵任務(wù) (1)
|
僅可用于編程,平行數(shù)據(jù)泵任務(wù)執(zhí)行與轉(zhuǎn)換數(shù)據(jù)和數(shù)據(jù)驅(qū)動的查詢?nèi)蝿?wù)相同的功能,但是支持 OLE DB 2.5 及更新版本所定義的 “章節(jié)式” 數(shù)據(jù)行集。
|
|
| ? |
復(fù)制和管理數(shù)據(jù)
|

|
批量插入任務(wù)
|
用于快速地將批量數(shù)據(jù)裝載到 SQL Server 表或視圖中。
|
|

|
Execute SQL 任務(wù)
|
用于在數(shù)據(jù)包執(zhí)行過程中運行 SQL 語句。Execute SQL 任務(wù)也可以保存查詢的結(jié)果數(shù)據(jù)。
|
|

|
Copy SQL Server Objects 任務(wù)
|
用來將 SQL Server 對象從一個 SQL Server 安裝或?qū)嵗袕?fù)制到另一個中。您可以復(fù)制數(shù)據(jù)和表等對象,也可以復(fù)制視圖和存儲過程等對象定義。
|
|

|
Transfer Database 任務(wù)(1)
|
用來將 SQL Server 數(shù)據(jù)庫從一個 SQL Server 7.0 或 SQL Server 2000 實例移動或復(fù)制到 SQL Server 2000 實例中。
|
|

|
Transfer Error Messages 任務(wù)(1)
|
用于將用戶指定的錯誤消息從 SQL Server 7.0 或 SQL Server 2000 實例復(fù)制到 SQL Server 2000 實例,這些錯誤消息是由sp_addmessage系統(tǒng)存儲過程所生成的。
|
|

|
Transfer Logins 任務(wù)(1)
|
用來將賬號從 SQL Server 7.0 或 SQL Server 2000 實例復(fù)制到 SQL Server 2000 實例。
|
|

|
Transfer Jobs 任務(wù)(1)
|
用來將作業(yè)從 SQL Server 7.0 或 SQL Server 2000 實例復(fù)制到 SQL Server 2000 實例。
|
|

|
Transfer Master Stored Procedures 任務(wù)(1)
|
用來將存儲過程從 SQL Server 7.0 或 SQL Server 2000 實例中的master數(shù)據(jù)庫復(fù)制到 SQL Server 2000 實例的 master數(shù)據(jù)庫。
|
|
| ? |
從數(shù)據(jù)包中將任務(wù)作為作業(yè)運行
|

|
ActiveX Script 任務(wù)
|
用來編寫代碼,執(zhí)行其他 DTS 任務(wù)中沒有的功能。
|
|

|
Dynamic Properties 任務(wù)(1)
|
用于在數(shù)據(jù)包運行時從 DTS 數(shù)據(jù)包外的來源處獲得數(shù)值,并將這些值分配給選定的數(shù)據(jù)包屬性。
|
|

|
Execute Package 任務(wù)(1)
|
用于從數(shù)據(jù)包中運行其他 DTS 數(shù)據(jù)包。
|
|

|
Execute Process 任務(wù)
|
用于運行可執(zhí)行程序或批處理文件。
|
|

|
FTP 任務(wù) (1)
|
用來從遠(yuǎn)程服務(wù)器或 Internet 位置下載數(shù)據(jù)文件。
|
|

|
Message Queue 任務(wù)(1)
|
用來從 Microsoft 消息隊列發(fā)送和接受消息。
|
|

|
Send Mail 任務(wù)
|
用來發(fā)送電子郵件。
|
|

|
Analysis Services Processing 任務(wù) (2)
|
用于處理一個或多個 SQL Server 2000 分析服務(wù)中所定義的對象。
|
|

|
Data Mining 任務(wù) (1,2)
|
用于從 SQL Server 2000 分析服務(wù)所定義的數(shù)據(jù)挖掘模型對象中創(chuàng)建一個預(yù)測查詢和輸出表。
|
|
1 SQL Server 2000中新增。
2 僅適用于已安裝 SQL Server 2000 分析服務(wù)的情形。
您可以程序化地創(chuàng)建定制任務(wù),然后使用 Register Custom Task(注冊定制任務(wù))命令將它們集成到 DTS Designer 中。
為了說明這些任務(wù)的使用,在這里我們給出了一個包含兩個任務(wù)的簡單 DTS 數(shù)據(jù)包: Microsoft ActiveX Script 任務(wù)和 Send Mail 任務(wù):
圖2:具有兩個任務(wù)的 DTS 數(shù)據(jù)包
ActiveX Script 任務(wù)可以駐留任何 ActiveX 腳本引擎,包括 Microsoft Visual Basic Scripting Edition (VBScript)、Microsoft JScript 或者 ActiveState ActivePerl(您可以從http://www. [英文]下載)。 Send Mail 任務(wù)可以發(fā)送消息,指出該數(shù)據(jù)包已經(jīng)運行。請注意,這些任務(wù)是沒有順序的。在執(zhí)行數(shù)據(jù)包時,ActiveX Script 任務(wù)和 Send Mail 任務(wù)同時運行。
工作流:設(shè)置任務(wù)優(yōu)先級
當(dāng)您在定義一組任務(wù)時,通常任務(wù)的執(zhí)行是應(yīng)該有一定順序的。如果這些任務(wù)擁有一定的順序,那么每個任務(wù)將稱為一個過程中的一個步驟。在 DTS Designer 中,您可以在 DTS Designer 設(shè)計頁中對任務(wù)進行操作,使用優(yōu)先級限制來控制任務(wù)執(zhí)行的順序。
優(yōu)先級限制將數(shù)據(jù)包中的任務(wù)依次鏈接起來。下表給出了您可以在 DTS 中使用的優(yōu)先級限制的類型。
|
 On Completion(完成后) (藍(lán)色箭頭)
|
如果您希望任務(wù) 2 處于等待狀態(tài),直至任務(wù) 1 完成(無論結(jié)果如何),那么就使用 On Completion 優(yōu)先級限制將任務(wù) 1 鏈接到任務(wù) 2。
|
|
 On Success(成功后) (綠色箭頭)
|
如果您希望任務(wù) 2 處于等待狀態(tài),直至任務(wù) 1 成功完成,那么就使用 On Success 優(yōu)先級限制將任務(wù) 1 鏈接到任務(wù) 2。
|
|
 On Failure(失敗后) (紅色箭頭)
|
如果您希望任務(wù) 2 僅在任務(wù) 1 無法成功執(zhí)行時才開始執(zhí)行,那么就使用 On Failure 優(yōu)先級限制將任務(wù) 1 鏈接到任務(wù) 2。
|
下圖給出了具有 On Completion 優(yōu)先級限制的 ActiveX Script 任務(wù)和 Send Mail 任務(wù)。當(dāng) ActiveX Script 任務(wù)完成后(不論成功還是失?。琒end Mail 任務(wù)都開始運行。
圖3:具有 On Completion 優(yōu)先級限制的 ActiveX Script 任務(wù)和 Send Mail 任務(wù)
您可以配置不同的 Send Mail 任務(wù),一個用于 On Success 限制,另一個用于 On Failure 限制。這兩個 Send Mail 任務(wù)可以根據(jù) ActiveX Script 的成功或失敗來發(fā)送不同的郵件。
圖4:郵件任務(wù)
您也可以在一個任務(wù)上應(yīng)用多個優(yōu)先級限制。例如, Send Mail 任務(wù)"Admin Notification"可以具有來自腳本#1的 On Success 限制和來自腳本#2 的 On Failure 限制。在這種情況下,DTS 認(rèn)為其使用邏輯"AND"關(guān)系。因此為了發(fā)送 Admin Notification 郵件,腳本#1必須成功執(zhí)行,而腳本#2 必須失敗。
圖5:同一任務(wù)多個優(yōu)先級限制的示例
連接:訪問和移動數(shù)據(jù)
為了成功地執(zhí)行復(fù)制和轉(zhuǎn)換數(shù)據(jù)的 DTS 任務(wù),DTS 數(shù)據(jù)包必須與其來源和目標(biāo)之間建立有效的連接,同樣需要連接到其他數(shù)據(jù)源(例如查詢表)
在創(chuàng)建數(shù)據(jù)包時,您可以從有效 OLE DB 提供商和 ODBC 驅(qū)動程序列表中選擇連接類型,對連接進行配置??捎玫倪B接類型包括:
| ? |
Microsoft 數(shù)據(jù)訪問組件(MDAC)驅(qū)動程序
|

|
Microsoft OLE DB Provider for SQL Server
|
|

|
Microsoft 數(shù)據(jù)鏈接
|
|

|
Microsoft ODBC Driver for Oracle
|
|
| ? |
Microsoft Jet 驅(qū)動程序
|

|
dBase 5
|
|

|
Microsoft Access
|
|

|
HTML 文件(來源)
|
|

|
Microsoft Excel 97-2000
|
|

|
Paradox 5.X
|
|
| ? |
其他驅(qū)動程序
|

|
文本文件(來源)
|
|

|
文本文件(目標(biāo))
|
|

|
其他連接
|
|
DTS 允許您使用任何 OLE DB 連接。連接工具欄中的圖標(biāo)為常用連接提供了方便的訪問方式。
下圖介紹了一個具有兩個連接的數(shù)據(jù)包。數(shù)據(jù)被從一個 Access 數(shù)據(jù)庫(來源連接)復(fù)制到 SQL Server 生產(chǎn)數(shù)據(jù)庫(目標(biāo)連接)。
圖6:具有兩個連接的數(shù)據(jù)包示例
查看大圖。
這個數(shù)據(jù)包的第一步是一個執(zhí)行 SQL 任務(wù),該任務(wù)檢查是否已經(jīng)存在目標(biāo)表。如果已經(jīng)存在,這個表將被刪除并重新創(chuàng)建。在成功的完成了執(zhí)行 SQL 任務(wù)后,數(shù)據(jù)在第二步中被復(fù)制到 SQL Server 數(shù)據(jù)庫。如果復(fù)制操作失敗,則在第三步中發(fā)送一封電子郵件。
數(shù)據(jù)泵:轉(zhuǎn)換數(shù)據(jù)
DTS 數(shù)據(jù)泵是一個 DTS 對象,用來驅(qū)動數(shù)據(jù)的導(dǎo)入、導(dǎo)出和轉(zhuǎn)換。在轉(zhuǎn)換數(shù)據(jù)、數(shù)據(jù)驅(qū)動的查詢以及平行數(shù)據(jù)泵任務(wù)中將使用這個數(shù)據(jù)泵。這些任務(wù)將在來源和目標(biāo)連接中創(chuàng)建數(shù)據(jù)行組,然后創(chuàng)建數(shù)據(jù)泵實例,將數(shù)據(jù)行在來源和目標(biāo)之間移動。在數(shù)據(jù)行被復(fù)制時,對每一行進行數(shù)據(jù)轉(zhuǎn)換。
下圖的步驟 2 中,在 Access DB 任務(wù)和 SQL Production DB 任務(wù)之間使用了一個轉(zhuǎn)換數(shù)據(jù)任務(wù)。轉(zhuǎn)換數(shù)據(jù)任務(wù)是兩個連接之間的灰色箭頭。
圖7:轉(zhuǎn)換數(shù)據(jù)任務(wù)的示例
查看大圖。
為了定義從來源連接收集到的數(shù)據(jù),您可以為這個轉(zhuǎn)換任務(wù)創(chuàng)建一個查詢。DTS 支持參數(shù)化的查詢,允許您在查詢執(zhí)行時定義查詢值。
您可以在該任務(wù)的屬性對話框中鍵入這個查詢。或者使用數(shù)據(jù)轉(zhuǎn)換服務(wù)查詢設(shè)計器(Data Transformation Services Query Designer),該工具可以用來為 DTS 任務(wù)圖形化地創(chuàng)建查詢。下圖中,使用查詢設(shè)計器構(gòu)建了一個將三個表加入到pubs數(shù)據(jù)庫中的查詢。
圖8:數(shù)據(jù)轉(zhuǎn)換服務(wù)查詢設(shè)計器界面
查看大圖。
在轉(zhuǎn)換任務(wù)中,您也可以定義對數(shù)據(jù)做出的更改。下表解釋了 DTS 提供的內(nèi)置轉(zhuǎn)換功能。
|
復(fù)制數(shù)據(jù)欄
|
用來直接將數(shù)據(jù)從來源復(fù)制到目標(biāo)數(shù)據(jù)欄中,對數(shù)據(jù)不進行任何轉(zhuǎn)換。
|
|
ActiveX 腳本
|
用來構(gòu)建定制的轉(zhuǎn)換。請注意,由于轉(zhuǎn)換是逐行進行的,因此ActiveX 腳本可能會影響 DTS 數(shù)據(jù)包的執(zhí)行速度。
|
|
日期事件字符串
|
用來將來源數(shù)據(jù)欄中的日期或事件轉(zhuǎn)換為目標(biāo)數(shù)據(jù)欄中不同的格式。
|
|
小寫字母字符串
|
用來將來源數(shù)據(jù)欄中的小寫字母轉(zhuǎn)換(如果需要)為目標(biāo)數(shù)據(jù)欄的數(shù)據(jù)類型。
|
|
大寫字母字符串
|
用來將來源數(shù)據(jù)欄中的所有大寫字母轉(zhuǎn)換(如果需要)為目標(biāo)數(shù)據(jù)欄的數(shù)據(jù)類型。
|
|
字符串中段
|
用來從來源數(shù)據(jù)欄中提取子字符串,將其轉(zhuǎn)換,然后將結(jié)果復(fù)制到目標(biāo)數(shù)據(jù)欄中。
|
|
修剪字符串
|
用于刪除來源數(shù)據(jù)欄中字符串前、后和中間的空白,并將結(jié)果復(fù)制到目標(biāo)數(shù)據(jù)欄中。
|
|
讀取文件
|
用來打開來源數(shù)據(jù)欄中所指定的文件的內(nèi)容,并將其內(nèi)容復(fù)制到目標(biāo)數(shù)據(jù)欄中。
|
|
寫入文件
|
用來將來源數(shù)據(jù)欄(數(shù)據(jù))的內(nèi)容復(fù)制到文件中,該文件的路徑由第二個來源數(shù)據(jù)欄(文件名)指定。
|
您也可以通過編程創(chuàng)建自己的定制轉(zhuǎn)換。創(chuàng)建定制轉(zhuǎn)換的最快方法是使用活動模板庫(Active Template Library,ATL)定制轉(zhuǎn)換模板,該模板包含在 SQL Server 2000 DTS 示例程序中。
數(shù)據(jù)泵錯誤日志
SQL Server 2000中 擁有一種記錄轉(zhuǎn)換錯誤的新方法。您可以定義三種異常日志文件,用于數(shù)據(jù)包執(zhí)行過程:錯誤文本文件、來源錯誤數(shù)據(jù)行文件以及目標(biāo)錯誤數(shù)據(jù)行文件。
| ? |
常規(guī)錯誤信息被寫入到錯誤文本文件中。
|
| ? |
如果轉(zhuǎn)換過程失敗,那么來源數(shù)據(jù)行將出現(xiàn)錯誤,并將該行寫入到來源錯誤數(shù)據(jù)行文件中。
|
| ? |
如果插入過程失敗,那么目標(biāo)數(shù)據(jù)行將出現(xiàn)錯誤,并將該行寫入到目標(biāo)錯誤數(shù)據(jù)行文件中。
|
異常日志文件被定義在轉(zhuǎn)換數(shù)據(jù)的任務(wù)中。每個轉(zhuǎn)換任務(wù)可以擁有它自己的日志文件。
數(shù)據(jù)泵階段
在默認(rèn)情況下,數(shù)據(jù)泵只有一個階段:數(shù)據(jù)行轉(zhuǎn)換。這個階段就是您所配置的在轉(zhuǎn)換數(shù)據(jù)任務(wù)、數(shù)據(jù)驅(qū)動的查詢?nèi)蝿?wù)以及平行數(shù)據(jù)泵任務(wù)中的數(shù)據(jù)欄轉(zhuǎn)換,而不選擇階段。
多數(shù)據(jù)泵階段功能是 SQL Server 2000 中所新增的。通過在 SQL Server Enterprise Manager 中選中多段數(shù)據(jù)泵選項,您可以在操作過程中的不同地方訪問數(shù)據(jù)泵,添加功能。
在將一行數(shù)據(jù)從來源復(fù)制到目標(biāo)時,數(shù)據(jù)泵按照下圖所示的基本程序進行操作。
在數(shù)據(jù)泵處理完最后一行數(shù)據(jù)后,任務(wù)完成,數(shù)據(jù)泵操作結(jié)束。
如果高級用戶需要在數(shù)據(jù)包中添加功能,使其支持任何數(shù)據(jù)泵階段,他可以這樣做:
| ? |
為每個定制的數(shù)據(jù)泵階段編寫一個ActiveX腳本階段。如果您使用ActiveX腳本功能來定制數(shù)據(jù)泵階段,不需要任何數(shù)據(jù)包以外的代碼。
|
| ? |
在 Microsoft Visual C++ 中創(chuàng)建 COM 對象,定制所選中的數(shù)據(jù)泵階段。您在數(shù)據(jù)包以外開發(fā)這個程序,轉(zhuǎn)換的每個所選中的階段都將調(diào)用這個程序。與訪問數(shù)據(jù)泵階段的 ActieX 腳本方法不同的是,ActiveX 腳本方法為每個選中的階段使用不同的功能和入口點,而這種方法提供了單一入口點,由多個數(shù)據(jù)泵階段在任務(wù)執(zhí)行過程中調(diào)用。
|
保存 DTS 數(shù)據(jù)包的選項
下列選項可以保存 DTS 數(shù)據(jù)包:
| ? |
Microsoft SQL Server
如果您希望在任何網(wǎng)絡(luò)中的 SQL Server 實例中保存數(shù)據(jù)包,請將您的 DTS 數(shù)據(jù)包保存在 Microsoft SQL Server 上,并保留這些數(shù)據(jù)包的清單,在數(shù)據(jù)包開發(fā)過程中添加和刪除數(shù)據(jù)包版本。
|
| ? |
SQL Server 2000 元數(shù)據(jù)服務(wù)
如果您計劃跟蹤數(shù)據(jù)包版本、元數(shù)據(jù)和數(shù)據(jù)血統(tǒng)信息,請將 DTS 數(shù)據(jù)包保存在元數(shù)據(jù)服務(wù)上。
|
| ? |
結(jié)構(gòu)化的存儲文件
如果您需要在網(wǎng)絡(luò)中復(fù)制、移動和發(fā)送數(shù)據(jù)包,而不想把數(shù)據(jù)包存儲到 Microsoft SQL Server 數(shù)據(jù)庫中,請將 DTS 數(shù)據(jù)包保存為結(jié)構(gòu)化的存儲文件。
|
| ? |
Microsoft Visual Basic
如果您希望將其集成到 Visual Basic 程序中,或作為 DTS 應(yīng)用程序開發(fā)的原型,請將由 DTS Designer 和 DTS 導(dǎo)入/導(dǎo)出向?qū)?chuàng)建的 DTS 數(shù)據(jù)包保存為 Microsoft Visual Basic 文件。
|
將 DTS 作為應(yīng)用程序開發(fā)平臺
DTS Designer 提供了多種數(shù)據(jù)移動任務(wù)的解決方案。DTS 通過提供對 DTS 對象模型的程序化訪問,擴展了許多可用的解決方案。使用Microsoft Visual Basic、Microsoft Visual C++ 或其他支持 COM 的應(yīng)用程序開發(fā)系統(tǒng) ,您可以為您的環(huán)境開發(fā)一個定制的 DTS 解決方案,使用圖形工具中所不支持的功能。
DTS 以多種不同的方式為開發(fā)人員提供支持:
| ? |
構(gòu)建數(shù)據(jù)包
您可以開發(fā)極其復(fù)雜的數(shù)據(jù)包,訪問對象模型中的所有功能,而不需要使用 DTS Designer 或 DTS 導(dǎo)入/導(dǎo)出向?qū)А?/p>
|
| ? |
擴展數(shù)據(jù)包
您可以通過定制的任務(wù)和轉(zhuǎn)換來增加新的功能,這些任務(wù)和轉(zhuǎn)換是專門為您的業(yè)務(wù)定制的,并且能在DTS中重復(fù)使用。
|
| ? |
執(zhí)行數(shù)據(jù)包
DTS 數(shù)據(jù)包的執(zhí)行不需要基于任何所提供的工具,可以通過 COM 事件通過編程執(zhí)行 DTS 數(shù)據(jù)包和顯示過程,允許構(gòu)建嵌入式或定制的 DTS 執(zhí)行環(huán)境。
|
所提供的 DTS 程序示例能夠幫助您了解 DTS 編程。這些示例與 SQL Server 2000 一同安裝。
如果您要開發(fā) DTS 應(yīng)用程序,那么您可以重新分配 DTS 文件。更多信息,請參考 SQL Server 2000 光盤的 Redist.txt 文件。
更多信息
Microsoft SQL Server 2000 Books Online中擁有許多有關(guān) DTS、使用DTS應(yīng)用程序以及構(gòu)建定制解決方案的信息。其他信息,請參考下列資源: