SQL Server 2000的數據轉換服務(下)
2024-08-31 00:50:24
供稿:網友
Microsoft SQL Server 2000的數據轉換服務(下)
數據泵:轉換數據
DTS 數據泵是一個 DTS對象,它驅動數據的導入、導出和轉換操作。
在執行數據轉換、數據驅動查詢和并行數據泵任務期間將使用數據泵。執
行這些任務的過程是:在源和目標連接上創建行集合,然后創建數據泵實
例在源和目標間移動這些行。在復制每一行時,將進行轉換操作。
下圖中,在第二個步驟中,轉換數據任務在 access DB任務和 SQL
PRoduction DB任務之間進行。轉換數據任務用連接間的灰色箭頭表示。
圖 7. 示例:轉換數據任務
要定義從源連接收集的數據,可以生成一個轉換任務的查詢。DTS 支
持參數化查詢,參數化查詢允許在執行查詢時定義查詢值。
可以將查詢鍵入任務的“屬性”對話框,也可以使用數據轉換服務查
詢設計器,它是一個用圖形化方式生成 DTS任務查詢的工具。下圖中,使
用查詢設計器來生成一個查詢,該查詢聯接 pubs 數據庫中的三個表。
圖 8. 數據轉換服務查詢設計器界面
在轉換任務中,還可以定義要對數據進行的更改。下表說明 DTS提供
的內置轉換。
轉換 說明
復制列 用于在不應用任何轉換的情況下將數據直接從源列復制到目標列。
ActiveX 腳本 用于生成自定義轉換。請注意,因為轉換將逐行進行,ActiveX 腳本可能影響 DTS 軟件包的執行速度。
DateTime 字符串 用于將源列中的日期或時間轉換為目標列中的另一種格式。
小寫字符串 用于將源列轉換為小寫字符形式,如需要,將其轉換為目標數據類型。
大寫字符串 用于將源列轉換為全大寫字符形式,如需要,將其轉換為目標數據類型。
中間字符串 用于從源列抽取子字符串,對其進行轉換后將結果復制到目標列。
修剪字符串 用于刪除源列中字符串的前導空格、尾隨空格和嵌入空格,然后將結果復制到目標列。
讀取文件 用于打開文件內容(文件名稱在源列中指定),然后將內容復制到目標列。
寫入文件 用于將源列(數據列)的內容復制到一個文件中,該文件的路徑由第二個源列(文件名列)指定。
還可以用編程方式創建自己的自定義轉換。生成自定義轉換最快速的
方式是使用活動模板庫(ATL )自定義轉換模板,SQL Server 2000 DTS
樣本程序中包括該模板。
數據泵錯誤記錄
SQL Server 2000 中提供了一種記錄轉換錯誤的新方法。可以定義三
種異常情況記錄文件來記錄軟件包執行期間的情況:錯誤文本文件、源錯
誤行文件和目標錯誤行文件。
●一般錯誤信息將寫入錯誤文本文件中。
●如果轉換失敗,源行出現錯誤,該行將寫入源錯誤行文件。
●如果插入失敗,目標行出現錯誤,該行將寫入目標錯誤行文件。
在轉換數據的任務中將定義異常情況日志文件。每個轉換任務都有自
己的日志文件。
數據泵階段
默認情況下,數據泵有一個階段,即行轉換。該階段是在未選擇階段
的情況下,在轉換數據任務、數據驅動查詢任務和并行數據泵任務中映射
列一級的轉換時配置的。
多個數據泵階段是 SQL Server 2000中新增的。通過在 SQL Server
企業管理器中選擇多階段數據泵選項,在數據泵操作過程中的不同階段都
可以訪問數據泵并添加功能。
將數據行從源復制到目標時,數據泵將按照下圖中所顯示的基本進程
進行操作。
圖 9. 數據泵進程
數據泵處理完最后一行數據后,任務結束,數據泵操作終止。
如果高級用戶要向軟件包添加功能,以便軟件包能支持任何數據泵階
段,可以執行以下操作:
●為每個要自定義的數據泵階段編寫一個 ActiveX 腳本階段函數。如果
使用 ActiveX 腳本函數來自定義數據泵階段,不需要該軟件包以外的
其它任何代碼。
●使用 Microsoft Visual C++? 創建 COM 對象來自定義所選的數據泵階
段。在該軟件包之外開發此程序,在執行轉換過程中每個所選的階段時
將調用該程序。訪問數據泵階段的 ActiveX 腳本方法中每個所選階段
都使用不同的函數和輸入點;而這種方法則不同,它在數據泵任務執行
期間提供一個單一輸入點,該輸入點將被多個數據泵階段調用。
保存 DTS 軟件包的選項
以下選項可用于保存 DTS 軟件包:
●Microsoft SQL Server
如果要將軟件包存儲到網絡中 SQL Server 的任意實例上,該選項將
DTS 軟件包保存到 Microsoft SQL Server ,保留一個便于使用的這些軟
件包的清單,并在軟件包開發進程中添加和刪除軟件包版本。
●SQL Server 2000 元數據服務
如果準備跟蹤軟件包版本、元數據和數據系列信息,該選項將 DTS軟
件包保存到元數據服務。
●結構化存儲文件
如希望在網絡間復制、移動和發送軟件包而不必將其存儲在Microsoft
SQL Server數據庫中,該選項將 DTS軟件包保存到結構化存儲文件。
●Microsoft Visual Basic
如果要將 DTS軟件包合并到 Visual Basic 程序中或將其用作 DTS應
用程序開發的原型,該選項將通過 DTS設計器或 DTS導入/ 導出向導所創
建的 DTS軟件包保存到 Microsoft Visual Basic 文件。
DTS 作為應用程序開發平臺
DTS 設計器為數據移動任務提供了多種解決方案。因為提供通過編程
方式訪問 DTS對象模型的功能,DTS 擴展了可用的解決方案的數目。使用
Microsoft Visual Basic、Microsoft Visual C++或任何其它支持 COM的
應用程序開發系統,都可以使用圖形化工具所不支持的功能開發出適合于
您的環境的自定義 DTS解決方案。
DTS 為開發人員提供多種不同方式的支持:
●生成軟件包
無需使用 DTS設計器或 DTS導入/ 導出向導,您就可以開發極為復雜
的軟件包,并可訪問對象模型中的全套功能。
●擴展軟件包
通過構建自定義任務和轉換,可以添加一些適用于您的業務并可在 DTS
內重復使用的新功能。
●執行程序包
并非一定要使用所提供的工具來執行 DTS軟件包,可以用編程方式執
行DTS軟件包并通過 COM事件顯示進度,并允許構建嵌入的或自定義的DTS
執行環境。
樣本DTS程序有助于了解DTS編程的入門知識。該樣本可與SQL Server
2000一起安裝。
如果開發 DTS應用程序,可以重新分發 DTS文件。有關詳細信息,請
參閱 SQL Server 2000光盤上的 Redist.txt。
摘自http://www.microsoft.com/china/msdn/?MSCOMTB=ICP_MSDN