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