SSIS实用教程(SQLServer2005)
創(chuàng)建新的 Integration Services 項目
SQL Server 2005
在Microsoft SQL Server 2005 Integration Services (SSIS) 中創(chuàng)建包的第一步就是創(chuàng)建一個 Integration Services 項目。此項目包含在數(shù)據(jù)轉(zhuǎn)換解決方案中使用的數(shù)據(jù)源、數(shù)據(jù)源視圖和包等對象的模板。
將在本 Integration Services 教程中創(chuàng)建的包用于解釋受區(qū)域設置影響的數(shù)據(jù)的值。如果您的計算機未配置為使用區(qū)域選項“英語(美國)”,則需要在包中設置其他屬性。第 2 課到第 5 課中使用的包是從第 1課中創(chuàng)建的包復制而來的,因此不需要更新復制的包中受區(qū)域設置影響的屬性。
創(chuàng)建新的 Integration Services 項目
默認情況下,將創(chuàng)建一個名為 Package.dtsx的空包,并將該包添加到項目中。
設置受區(qū)域設置影響的屬性
添加和配置平面文件連接管理器
SQL Server 2005
其他版本
1(共 3)對本文的評價是有幫助評價此主題
更新日期: 2006 年 4 月 14 日
在本任務中,將在剛創(chuàng)建的包中添加一個平面文件連接管理器。通過平面文件連接管理器,包可從平面文件中提取數(shù)據(jù)。使用平面文件連接管理器,可以指定包從平面文件中提取數(shù)據(jù)時要應用的文件的名稱與位置、區(qū)域設置與代碼頁以及文件格式,其中包括列分隔符。另外,還可以為各個列手動指定數(shù)據(jù)類型;也可以使 用“提供列類型建議”對話框,自動將提取出來的數(shù)據(jù)列映射到 Integration Services 數(shù)據(jù)類型。
必須為要使用的每種文件格式創(chuàng)建一個新的平面文件連接管理器。因為本教程從多個數(shù)據(jù)格式完全相同的平面文件提取數(shù)據(jù),所以只需為您的包添加和配置一個平面文件連接管理器。
在本教程中,將在平面文件連接管理器中配置以下屬性:
- Column names 因為平面文件沒有列名,因此平面文件連接管理器將創(chuàng)建默認的列名。這些默認名稱不能用于標識每個列代表的內(nèi)容。若要使這些默認名稱更有用,需要將默認名稱改為要加載平面文件數(shù)據(jù)的事實數(shù)據(jù)表匹配的名稱。
- Data mappings 為平面文件連接管理器指定的數(shù)據(jù)類型映射,將由所有引用該連接管理器的平面文件數(shù)據(jù)源組件使用。可以使用平面文件連接管理器,或者使用“提供列類型建議”對話框來手動映射數(shù)據(jù)類型。在本教程中,將查看“提供列類型建議”對話框中建議的映射,然后在“平面文件連接管理器編輯器”對話框中手動設置必要的映射。
平面文件連接管理器提供了有關數(shù)據(jù)文件的區(qū)域設置信息。如果未將您的計算機配置為使用區(qū)域設置選項“英語(美國)”,則必須在“平面文件連接管理器編輯器”對話框中設置其他屬性。
添加一個平面文件連接管理器
設置受區(qū)域設置影響的屬性
重命名平面文件連接管理器中的列
- 將 Column 0 名稱屬性改為 AverageRate。
- 將 Column 1 名稱屬性改為 CurrencyID。
- 將 Column 2 名稱屬性改為 CurrencyDate。
- 將 Column 3 名稱屬性改為 EndOfDayRate。
| 注意: |
| 默認情況下,所有四個列最初都設置為字符串數(shù)據(jù)類型 [DT_STR],其 OutputColumnWidth 為 50。 |
重新映射列數(shù)據(jù)類型
Integration Services 將根據(jù)前 100 行數(shù)據(jù)自動建議最合適的數(shù)據(jù)類型。您還可以將這些建議選項改為增加或減少取樣數(shù)據(jù),以便指定整數(shù)數(shù)據(jù)或布爾數(shù)據(jù)的默認數(shù)據(jù)類型,或添加作為填充量添加到字符串列中的空格。
現(xiàn)在,請不要對“提供列類型建議”對話框中的選項進行任何更改,單擊“確定”可使Integration Services 提供列數(shù)據(jù)類型的建議。這樣,您將轉(zhuǎn)到“平面文件連接管理器編輯器”對話框的“高級”窗格,在此可以查看 Integration Services 建議使用的列數(shù)據(jù)類型。(如果單擊“取消”,則不對列元數(shù)據(jù)提供任何建議,并使用默認字符串 (DT_STR) 數(shù)據(jù)類型。)
在本教程中,Integration Services 為SampleCurrencyData.txt 文件中的數(shù)據(jù)建議了下表第二列中顯示的數(shù)據(jù)類型。但是,目標中的列要求的數(shù)據(jù)類型(將在以后的步驟中定義)顯示在下表的最后一列。
| 平面文件列 | 建議的類型 | 目標列 | 目標類型 |
| AverageRate | Float [DT_R4] | FactCurrencyRate.AverageRate | Float |
| CurrencyID | String [DT_STR] | DimCurrency.CurrencyAlternateKey | nchar(3) |
| CurrencyDate | Date [DT_DATE] | DimTime.FullDateAlternateKey | datetime |
| EndOfDayRate | Float [DT_R4] | FactCurrencyRate.EndOfDayRate | Float |
為 CurrencyID 和 CurrencyDate 列建議的數(shù)據(jù)類型與目標表中的字段的數(shù)據(jù)類型不兼容。由于 DimCurrency.CurrencyAlternateKey 的數(shù)據(jù)類型為nchar (3),CurrencyID 必須從字符串類型 [DT_STR] 改為字符串類型 [DT_WSTR]。另外,字段 DimTime.FullDateAlternateKey 被定義為 DataTime 數(shù)據(jù)類型,因此CurrencyDate 需要從日期類型 [DT_Date] 改為數(shù)據(jù)庫時間戳類型 [DT_DBTIMESTAMP]。
添加和配置 OLE DB 連接管理器
SQL Server 2005
添加了用于連接到數(shù)據(jù)源的平面文件連接管理器以后,下一個任務是添加用于連接到目標的 OLE DB 連接管理器。通過 OLE DB 連接管理器,包可以在任何 OLE DB 兼容的數(shù)據(jù)源中提取數(shù)據(jù)或加載數(shù)據(jù)。使用 OLE DB 連接管理器,可以為連接指定服務器、身份驗證方法和默認數(shù)據(jù)庫。
在本課中,將創(chuàng)建使用 Windows 身份驗證的 OLE DB 連接管理器,以連接到 AdventureWorksDB 的本地實例。本教程以后要創(chuàng)建的其他組件(如查找轉(zhuǎn)換和 OLE DB 目標)也將引用此處創(chuàng)建的 OLE DB 連接管理器。
添加和配置 OLE DB 連接管理器
將 localhost 指定為服務器名稱時,連接管理器將連接到本地計算機上 Microsoft SQL Server 2005 的默認實例。若要使用 SQLServer 2005 的遠程實例,請將 localhost 替換為要連接到的服務器的名稱。
在包中添加數(shù)據(jù)流任務
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
為源數(shù)據(jù)和目標數(shù)據(jù)創(chuàng)建了連接管理器后,下一個任務是在包中添加一個數(shù)據(jù)流任務。數(shù)據(jù)流任務將封裝在源和目標之間移動數(shù)據(jù)的數(shù)據(jù)流引擎,并提供在移動數(shù)據(jù)時轉(zhuǎn)換、清除和修改數(shù)據(jù)的功能。大部分的數(shù)據(jù)提取、轉(zhuǎn)換和加載 (ETL) 進程均在數(shù)據(jù)流任務中完成。
| 注意: |
| Microsoft SQL Server 2005 Integration Services 將數(shù)據(jù)流從控制流中分隔開來。將數(shù)據(jù)流從控制流進行分隔是 Integration Services 與 Microsoft SQL Server 2000 Data Transformation Services 的重要區(qū)別之一。 |
添加一個數(shù)據(jù)流任務
好的做法是為添加到設計圖面的所有組件提供唯一的名稱??紤]到易用性和可維護性,名稱應說明每個組件執(zhí)行的功能。按照這些命名指南,Integration Services 包可以進行自我說明。另一個說明包的方法是使用批注。有關批注的詳細信息,請參閱在包中使用批注。
添加并配置平面文件源
SQL Server 2005
更新日期: 2005 年 12 月 5 日
在此任務中,將向包中添加一個平面文件源并對其進行配置。平面文件源是一個數(shù)據(jù)流組件,它使用平面文件連接管理器定義的元數(shù)據(jù)來指定轉(zhuǎn)換過程要從此平面文件中提取的數(shù)據(jù)的格式和結(jié)構(gòu)。可以通過使用平面文件連接管理器提供的文件格式定義將平面文件源配置為從單個平面文件提取數(shù)據(jù)。
對于本教程,您將把平面文件源配置為使用以前創(chuàng)建的Sample Flat File Source Data 連接管理器。
添加平面文件源組件
添加并配置查找轉(zhuǎn)換
SQL Server 2005
更新日期: 2005 年 12 月 5 日
配置了用于從源文件提取數(shù)據(jù)的平面文件源后,下一個任務是定義獲取CurrencyKey 和 TimeKey 的值所需的查找轉(zhuǎn)換。查找轉(zhuǎn)換通過將指定輸入列中的數(shù)據(jù)聯(lián)接到引用數(shù)據(jù)集中的列來執(zhí)行查找。引用數(shù)據(jù)集可以是現(xiàn)有的表或視圖,也可以是新表或 SQL 語句的結(jié)果。查找轉(zhuǎn)換使用 OLE DB 連接管理器連接到包含引用數(shù)據(jù)集的源數(shù)據(jù)的數(shù)據(jù)庫。
對于本教程,您將向包中添加以下兩個查找轉(zhuǎn)換組件并對其進行配置:
- 一個轉(zhuǎn)換是根據(jù)平面文件中匹配的 CurrencyID 列值對 DimCurrency 維度表的 CurrencyKey 列中的值執(zhí)行查找。
- 一個轉(zhuǎn)換是根據(jù)平面文件中匹配的 CurrencyDate 列值對 DimTime 維度表的 TimeKey 列中的值執(zhí)行查找。
無論在哪種情況下,查找轉(zhuǎn)換都將使用前面創(chuàng)建的 OLE DB 連接管理器。
添加并配置 Lookup Currency Key 轉(zhuǎn)換
添加并配置 Lookup DateKey 轉(zhuǎn)換
添加和配置 OLE DB 目標
SQL Server 2005
其他版本
1(共 1)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
您的包現(xiàn)在可以從平面文件源提取數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換為與目標兼容的格式。下一個任務是將已轉(zhuǎn)換的數(shù)據(jù)實際加載到目標。若要加載數(shù)據(jù),您必須將 OLE DB 目標添加到數(shù)據(jù)流。OLE DB 目標可以使用數(shù)據(jù)庫表、視圖或 SQL 命令將數(shù)據(jù)加載到各種 OLE DB 兼容的數(shù)據(jù)庫中。
在此過程中,您將添加和配置 OLE DB 目標以使用以前創(chuàng)建的 OLE DB 連接管理器。
添加和配置示例 OLE DB 目標
使 Lesson 1 包更易理解
SQL Server 2005
新建日期: 2005 年 12 月 5 日
因為您已完成了 Lesson 1 包的配置,所以整理包布局是很必要的。如果控制流和數(shù)據(jù)流布局中的形狀大小不一,或者如果形狀未對齊或未進行分組,則可能很難理解包功能。
Business Intelligence Development Studio 提供了可輕松、快速設置包布局格式的工具。格式設置功能包括使形狀大小統(tǒng)一,對齊各個形狀,并控制形狀之間的水平間距和垂直間距。
另一種增進對包功能的了解的方式是添加描述包功能的批注。
在本任務中,您將使用 Business Intelligence Development Studio 中的格式設置功能改善數(shù)據(jù)流的布局并向數(shù)據(jù)流中添加批注。
設置數(shù)據(jù)流布局的格式
現(xiàn)在便已選定所有數(shù)據(jù)流組件。首先選定的形狀(該形狀選定的指示符為白色)將確定在設置布局格式時所使用的大小和位置。
向數(shù)據(jù)流中添加批注
The data flow extracts data from a file, looks up valuesin the CurrencyKey column in the DimCurrency table and the TimeKey column inthe DimTime table, and writes the data to the FactCurrencyRate table.
若要在批注框中使文本換行,請將光標置于要開始新行的位置,然后按 Ctrl 和 Enter 鍵。
如果未將文本添加到批注框,則當您在批注框外部單擊時,該文本便會消失。
測試 Lesson 1 教程包
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
更新日期: 2005 年 12 月 5 日
在本課中,已經(jīng)完成了下列任務:
- 創(chuàng)建了一個新的 SSIS 項目。
- 配置了包連接到源數(shù)據(jù)和目標數(shù)據(jù)所需的連接管理器。
- 添加了一個數(shù)據(jù)流,該數(shù)據(jù)流從平面文件源提取數(shù)據(jù),對數(shù)據(jù)執(zhí)行必要的查找轉(zhuǎn)換,并為目標配置數(shù)據(jù)。
包現(xiàn)在已經(jīng)完成了!該對包進行測試了。
檢查包布局
測試包之前,應當確保 Lesson 1 包中的控制流和數(shù)據(jù)流包含下列關系圖中顯示的對象。
控制流
數(shù)據(jù)流
運行 Lesson 1 教程包
包將開始運行,結(jié)果有 1097 個行被成功添加到 AdventureWorksDW 中的 FactCurrencyRate 事實數(shù)據(jù)表中。
第 2 課:添加循環(huán)
SQL Server 2005
其他版本
2(共 2)對本文的評價是有幫助評價此主題
在第 1 課:創(chuàng)建項目和基本包中,創(chuàng)建了從單個平面文件源提取數(shù)據(jù)的包,然后使用查找轉(zhuǎn)換功能對數(shù)據(jù)進行了轉(zhuǎn)換,最后將數(shù)據(jù)加載到AdventureWorksDW 示例數(shù)據(jù)庫的 FactCurrencyRate 事實數(shù)據(jù)表中。
但是,提取、轉(zhuǎn)換和加載 (ETL) 過程很少使用單個平面文件。典型的 ETL 過程從多個平面文件源提取數(shù)據(jù)。從多個源提取數(shù)據(jù)需要采用迭代控制流。Microsoft SQL Server 2005 Integration Services (SSIS) 最可能出現(xiàn)的功能之一是可以方便快捷地向包中添加迭代或循環(huán)。
Integration Services 為循環(huán)遍歷包提供了兩種容器類型:Foreach 循環(huán)容器和 For 循環(huán)容器。Foreach 循環(huán)容器使用枚舉器執(zhí)行循環(huán),而 For 循環(huán)則通常使用變量表達式。本課使用 Foreach 循環(huán)容器。
Foreach 循環(huán)容器使包能夠?qū)χ付杜e器的每個成員重復執(zhí)行控制流。使用 Foreach循環(huán)容器,可以枚舉:
- ADO 記錄集行和架構(gòu)信息
- 文件和目錄結(jié)構(gòu)
- 系統(tǒng)、包和用戶變量
- SQL Server 管理對象 (SMO)
在本課中,您將修改在第 1 課中創(chuàng)建的簡單 ETL 包,以便利用 Foreach 循環(huán)容器。還將設置用戶定義的包變量,以便使該教程包能夠迭代遍歷文件夾中的所有平面文件。如果您尚未完成上一課,則也可以復制本教程中附帶的已完成的 Lesson 1 包。
在本課中,將不修改數(shù)據(jù)流,而只修改控制流。
| 重要提示: |
| 本教程需要 AdventureWorksDW 示例數(shù)據(jù)庫。有關如何安裝和部署 AdventureWorksDW 的詳細信息,請參閱運行安裝程序安裝 AdventureWorks 示例數(shù)據(jù)庫和示例。 |
復制 Lesson 1 包
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
更新日期: 2005 年 12 月 5 日
在本任務中,為在第 1 課中創(chuàng)建的 Lesson 1.dtsx 包創(chuàng)建一個副本。如果未完成第 1 課的學習,則可以向項目中添加本教程中附帶的已完成的 Lesson 1 包,然后再對其進行復制。您將使用這一新副本來完成第 2 課剩余部分。
創(chuàng)建 Lesson 2 包
默認情況下,復制的包將命名為 Lesson 2.dtsx。
添加已完成的 Lesson 1 包
添加和配置 Foreach 循環(huán)容器
SQL Server 2005
更新日期: 2005 年 12 月 5 日
在本任務中,您將添加循環(huán)訪問平面文件的文件夾的功能,并將第 1 課中使用的同一數(shù)據(jù)流轉(zhuǎn)換應用于其中的每個平面文件。實現(xiàn)方法是將 Foreach 循環(huán)容器添加到控制流中并進行配置。
所添加的 Foreach 循環(huán)容器必須能夠連接到該文件夾中的每個平面文件。由于該文件夾中的所有文件都具有相同的格式,因此,Foreach 循環(huán)容器可以使用同一平面文件連接管理器來連接其中的每個文件。該容器所使用的平面文件連接管理器與您在第 1 課中創(chuàng)建的平面文件連接管理器相同。
目前,第 1 課中的平面文件連接管理器只連接一個特定的平面文件。若要循環(huán)地連接該文件夾中的每個平面文件,必須同時對 Foreach 循環(huán)容器和平面文件連接管理器進行如下配置:
- Foreach 循環(huán)容器 將該容器的枚舉值映射為用戶定義的包變量。然后,該容器將使用此用戶定義變量來動態(tài)修改平面文件連接管理器的 ConnectionString 屬性,并循環(huán)連接該文件夾中的每個平面文件。
- 平面文件連接管理器 使用用戶定義的變量填充在第 1 課中創(chuàng)建的連接管理器的 ConnectionString 屬性,以修改該連接管理器。
本任務中的過程向您顯示如何創(chuàng)建和修改 Foreach 循環(huán)容器以使用用戶定義的包變量,以及如何將數(shù)據(jù)流任務添加到該循環(huán)中。您將了解改平面文件連接管理器,以便在下一任務中使用用戶定義的變量。
在對該包進行這些修改后,當該包運行時,Foreach 循環(huán)容器將循環(huán)訪問示例數(shù)據(jù)文件夾中的文件集合。每次找到一個與條件相匹配的文件時,Foreach 循環(huán)容器都會用文件名填充用戶定義的變量,將用戶定義的變量映射到Sample Currency Data 平面文件連接管理器的 ConnectionString 屬性,然后對該文件運行數(shù)據(jù)流。因此,在 Foreach 循環(huán)的每次迭代中,數(shù)據(jù)流任務都將使用一個不同的平面文件。
| 注意: |
| 由于 Microsoft SQL Server 2005 Integration Services (SSIS) 區(qū)分控制流和數(shù)據(jù)流,因此添加到控制流的任何循環(huán)都不需要對數(shù)據(jù)流進行修改。因此,無需更改在第 1 課中創(chuàng)建的數(shù)據(jù)流。 |
添加 Foreach 循環(huán)容器
為 Foreach 循環(huán)容器配置枚舉器
默認情況下,教程示例數(shù)據(jù)安裝在以下文件夾中:C:\Program Files\Microsoft SQLServer\90\Samples\Integration Services\Tutorial\Creating a Simple ETLPackage\Sample Data。
將枚舉器映射為用戶定義的變量
| 重要提示: |
| 變量名稱區(qū)分大小寫。 |
將數(shù)據(jù)流任務添加到循環(huán)中
- 將 Extract Sample Currency Data 數(shù)據(jù)流任務拖動到現(xiàn)已重命名為 Foreach File in Folder 的 Foreach 循環(huán)容器中。
修改平面文件連接管理器
SQL Server 2005
在本任務中,您將修改在第 1 課中創(chuàng)建和配置的平面文件連接管理器。平面文件連接管理器在最初創(chuàng)建時配置為靜態(tài)加載單個文件。若要啟用平面文件連接管理器以重復加載文件,您必須修改連接管理器的ConnectionString 屬性以接受用戶定義的變量 User:varFileName,該變量包含要在運行時加載的文件的路徑。
通過將連接管理器修改為使用用戶定義的變量 User::varFileName 的值并填充連接管理器的 ConnectionString 屬性,連接管理器將能夠連接到不同的平面文件。在運行時,Foreach 循環(huán)容器的每次迭代都將動態(tài)更新 User::varFileName 變量。更新變量時,還會使連接管理器連接到不同的平面文件,并使數(shù)據(jù)流任務處理其他數(shù)據(jù)集。
配置平面文件連接管理器以使用連接字符串的變量
測試 Lesson 2 教程包
SQL Server 2005
其他版本
1(共 2)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
使用現(xiàn)在配置的 Foreach 循環(huán)容器和平面文件連接管理器,Lesson 2 包可以迭代遍歷示例數(shù)據(jù)文件夾中由 14 個平面文件組成的集合。每次找到與指定的文件名條件匹配的文件名時,Foreach 循環(huán)容器都將用該文件名填充用戶定義的變量。該變量又會更新平面文件連接管理器的ConnectionString 屬性,并與新平面文件建立連接。然后,在連接到文件夾中的下一個文件之前,Foreach 循環(huán)容器將對新平面文件中的數(shù)據(jù)運行未修改的數(shù)據(jù)流任務。
使用以下過程可以測試已添加到包中的新循環(huán)功能。
檢查包布局
測試包之前,應當確保 Lesson 2 包中的控制流和數(shù)據(jù)流包含下列關系圖中顯示的對象。數(shù)據(jù)流應與第 1 課中的數(shù)據(jù)流相同。
控制流
數(shù)據(jù)流
測試 Lesson 2 教程包
包將運行??梢栽凇拜敵觥贝翱谥谢騿螕?strong>“進度”選項卡來驗證每個循環(huán)的狀態(tài)。例如,可以看到 1097 行從文件 Currency_VEB.txt 添加到目標表中。
第 3 課:添加包配置
SQL Server 2005
其他版本
0(共 1)對本文的評價是有幫助評價此主題
包配置允許您從開發(fā)環(huán)境的外部設置運行時屬性和變量。配置允許您開發(fā)靈活的并且易于部署和分發(fā)的包。Microsoft SQL Server 2005 Integration Services (SSIS) 提供了以下配置類型:
- XML 配置文件
- 環(huán)境變量
- 注冊表項
- 父包變量
- SQL Server 表
在本課中,將修改在第 2 課:添加循環(huán)中 創(chuàng)建的簡單 IntegrationServices 包,以便利用包配置。還可以復制本教程中附帶的已完成的 Lesson 2 包。使用包配置向?qū)?#xff0c;將創(chuàng)建一個 XML 配置,以便通過使用映射到 Directory 屬性的包級別變量來更新 Foreach 循環(huán)容器的 Directory 屬性。在創(chuàng)建配置文件之后,將從開發(fā)環(huán)境的外部修改該變量的值,并將修改后的屬性指向新的示例數(shù)據(jù)文件夾。再次運行包時,配置文件將填充該變量的值,而該變量又會更新Directory 屬性。結(jié)果,包將迭代遍歷新數(shù)據(jù)文件夾中的文件,而不是迭代遍歷在該包中硬編碼的原始文件夾中的文件。
| 重要提示: |
| 本教程需要 AdventureWorksDW 示例數(shù)據(jù)庫。有關如何安裝和部署 AdventureWorksDW 的詳細信息,請參閱運行安裝程序安裝 AdventureWorks 示例數(shù)據(jù)庫和示例。 |
復制 Lesson 2 包
SQL Server 2005
其他版本
1(共 1)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
在本任務中,為在第 2 課中創(chuàng)建的 Lesson 2.dtsx 包創(chuàng)建一個副本。如果未完成第 2 課的學習,則可以向項目中添加本教程中附帶的已完成的 Lesson 2 包,然后再對其進行復制。您將使用這一新副本來完成第 3 課剩余部分。
創(chuàng)建 Lesson 2 包
默認情況下,復制的包命名為 Lesson 3.dtsx。
添加已完成的 Lesson 2 包
啟用并配置包配置
SQL Server 2005
其他版本
2(共 4)對本文的評價是有幫助評價此主題
更新日期: 2006 年 12 月 12 日
在本任務中,將使用包配置向?qū)韱⒂冒渲?。您將使用該向?qū)?XML 配置文件,該文件包含 Foreach 循環(huán)容器的 Directory 屬性的配置設置。Directory 屬性的值由新的包級別變量在運行時提供,您可以更新該變量。另外,將填充要在測試期間使用的新的示例數(shù)據(jù)文件夾。
| 注意: |
| 包配置向?qū)Р辉?XML 配置文件中保存 Password 和 UserName 屬性值。如果使用 dtexec 命令提示實用工具運行包,則必須使用文本編輯器(如記事本)將屬性值添加到文件。否則,此包將不運行。有關如何使用命令提示實用工具的詳細信息,請參閱如何使用 DTExec 實用工具運行包。 |
創(chuàng)建映射到 Directory 屬性的新的包級別變量
| 重要提示: |
| 變量名稱區(qū)分大小寫。 |
啟用包配置
| 注意: |
| 配置文件通常包含有關包屬性的復雜信息,但對于本教程,唯一的信息應當是 [User::varFolderName].Properties[Value]。 |
創(chuàng)建并填充新的示例數(shù)據(jù)文件夾
修改目錄屬性配置值
SQL Server 2005
其他版本
1(共 2)對本文的評價是有幫助評價此主題
更新日期: 2006 年 4 月 14 日
在此任務中,將針對包級變量 User::varFolderName 的 Value 屬性,修改存儲在 SSISTutorial.dtsConfig 文件中的配置設置。該變量可以更新 Foreach 循環(huán)容器的 Directory 屬性。修改后的值將指向前一個任務中創(chuàng)建的 New Sample Data 文件夾。修改了配置設置并運行包以后,該變量將使用從配置文件填充的值(而不是包中最初配置的目錄值),來更新 Directory 屬性。
修改目錄屬性的配置設置
<?xmlversion="1.0"?><DTSConfiguration><DTSConfigurationHeading><DTSConfigurationFileInfoGeneratedBy="Domain\UserName" GeneratedFromPackageName="Lesson3" GeneratedFromPackageID="{99396D72-2F8D-4A37-8362-96346AD53334}"GeneratedDate="11/12/2005 12:46:13PM"/></DTSConfigurationHeading><ConfigurationConfiguredType="Property"Path="\Package.Variables[User::varFolderName].Properties[Value]"ValueType="String"><ConfiguredValue>C:\New SampleData</ConfiguredValue></Configuration></DTSConfiguration>
當然,標題信息(GeneratedBy、GeneratedFromPackageID 和 GeneratedDate )將與您的文件有所不同。要注意的元素是Configuration 元素。變量 User::varFolderName 的 Value 屬性現(xiàn)在包含 C:\New Sample Data。
測試 Lesson 3 教程包
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
更新日期: 2005 年 12 月 5 日
在運行時,包將從運行時更新的變量中獲取Directory 屬性的值,而不使用您在創(chuàng)建該包時指定的原始目錄名。該變量的值由 SSISTutorial.dtsConfig 文件填充。
若要驗證該包在運行時是否使用新值更新了 Directory 屬性,只需執(zhí)行該包。由于只向新目錄中復制了三個示例數(shù)據(jù)文件,因此該數(shù)據(jù)流將只運行三次,而不遍歷原始文件夾中的 14 個文件。
檢查包布局
測試包之前,應當確保 Lesson 3 包中的控制流和數(shù)據(jù)流包含下列關系圖中顯示的對象??刂屏鲬cLesson 2 中的控制流相同,數(shù)據(jù)流應與 Lesson 1 和 Lesson 2 中的數(shù)據(jù)流相同。
控制流
數(shù)據(jù)流
測試 Lesson 3 教程包
第 4 課:添加日志記錄
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
Microsoft SQL Server 2005 Integration Services (SSIS) 包含日志記錄功能,這些功能使您可以通過提供任務和容器事件跟蹤來對包執(zhí)行進行疑難排解和監(jiān)控。日志記錄功能非常靈活,可以在包級別或在包中的各個任務和 容器上啟用??梢赃x擇要記錄的事件,也可以對單個包創(chuàng)建多個日志。
日志記錄由日志提供程序提供。每個日志提供程序可以將日志記錄信息寫入不同的格式和目標類型。Integration Services 提供了以下日志提供程序:
- 文本文件
- SQL Server Profiler
- Windows 事件日志
- SQL Server
- XML 文件
在本課中,您將為第 3 課:添加包配置中創(chuàng)建的包創(chuàng)建副本。使用這個新包,您將添加并配置日志記錄,以在包執(zhí)行過程中監(jiān)控特定事件。如果您尚未完成前面的任何課程,也可以復制本教程附帶的已完成的 Lesson 3 包。
| 重要提示: |
| 本教程需要 AdventureWorksDW 示例數(shù)據(jù)庫。有關如何安裝和部署 AdventureWorksDW 的詳細信息,請參閱運行安裝程序安裝 AdventureWorks 示例數(shù)據(jù)庫和示例。 |
復制 Lesson 3 包
SQL Server 2005
其他版本
1(共 2)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
在本任務中,您將創(chuàng)建在第 3 課中創(chuàng)建的 Lesson 3.dtsx 包的副本,或者將本教程中附帶的已完成的 Lesson 3 包添加到項目中,然后再對其進行復制。您將使用這一新副本來完成第 4 課剩余部分。
由于包配置信息將隨包本身一同復制,因此您還必須修改包配置以還原上一課中所做的一項更改,并將 Foreach 循環(huán)重新指向原始的示例數(shù)據(jù)文件夾。
創(chuàng)建 Lesson 4 包
默認情況下,復制的包命名為 Lesson 4.dtsx。
添加已完成的 Lesson 3 包
修改包配置
| 注意: |
| 在 XML 配置文件中,無需使用引號將路徑括起。 |
添加和配置日志記錄
SQL Server 2005
其他版本
0(共 2)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
在該任務中,將要為 Lesson 4.dtsx 包中的數(shù)據(jù)流啟用日志記錄。然后,將配置一個文本文件日志提供程序,以記錄 PipelineExecutionPlan 和PipelineExecuteTrees 事件。該文本文件日志提供程序可以創(chuàng)建便于查看并可輕松傳輸?shù)娜罩尽S捎诒阌谑褂?#xff0c;因此,這些日志文件在包的基本測試階段非常有用。您也可以在 SSIS 設計器的“日志事件”窗口中查看日志條目。
向包中添加日志記錄
Integration Services 將向包中添加一個默認名稱為用于文本文件的 SSIS 日志提供程序的新文本文件日志提供程序?,F(xiàn)在便可對新的日志提供程序進行配置。
在“文件連接管理器編輯器”對話框中,對“使用類型”選擇“創(chuàng)建文件”,然后單擊“瀏覽”。默認情況下,“選擇文件”對話框?qū)⒋蜷_項目文件夾,但您可以將日志信息保存到任何位置。
| 重要提示: |
| 如果 Extract Sample Currency Data 復選框顯示為灰色而并非選中狀態(tài),則該任務將使用父容器的日志設置,無法啟用任務特定的日志事件。 |
測試 Lesson 4 教程包
SQL Server 2005
其他版本
0(共 1)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
在該任務中,將運行 Lesson 4.dtsx 包。包運行時,“日志事件”窗口將列出寫入日志文件的日志條目。執(zhí)行完包之后,將驗證日志提供程序所生成的日志文件的內(nèi)容。
檢查包布局
測試包之前,應當確保 Lesson 4 包中的控制流和數(shù)據(jù)流包含下列關系圖中顯示的對象。控制流應與Lesson 2 和 Lesson 3 中的控制流相同,數(shù)據(jù)流應與 Lesson 1 至 Lesson 3 中的數(shù)據(jù)流相同。
控制流
數(shù)據(jù)流
運行 Lesson 4 教程包
檢查生成的日志文件
- 使用記事本或其他任何文本編輯器,打開 TutorialLog.log 文件。
- 盡管為 PipelineExecutionPlan 和 PipelineExecutionTrees 事件所生成的信息的語義超出了本教程的討論范圍,但是,可以看到第一行列出了在“配置 SSIS 日志”對話框的“詳細信息”選項卡中所指定的信息字段。此外,可以驗證已為 Foreach 循環(huán)的每個迭代記錄了所選擇的兩個事件:PipelineExecutionPlan 和 PipelineExecutionTrees。
有關如何使用日志文件的詳細信息,請參閱在包中實現(xiàn)日志記錄。
第 5 課:添加錯誤流重定向
SQL Server 2005
其他版本
0(共 1)對本文的評價是有幫助評價此主題
為了處理在轉(zhuǎn)換過程中可能發(fā)生的錯誤,Microsoft SQL Server 2005 Integration Services (SSIS) 使您能夠基于每個組件和每個列來決定如何處理無法轉(zhuǎn)換的數(shù)據(jù)??梢赃x擇忽略某些列中的失敗、重定向整個失敗的行或者只是使組件失敗。默認情況下,Integration Services 中的所有組件被配置為在發(fā)生錯誤時失敗。而使組件失敗又會導致包失敗,并使所有后續(xù)處理停止。
如果不讓失敗導致包停止執(zhí)行,一個好方法是通過配置使在轉(zhuǎn)換中發(fā)生潛在處理錯誤時這些錯誤能夠得到處理。雖然可能選擇忽略失敗以確保包成功運行,但通常更好的做法是將失敗的行重定向到另一個處理路徑,在這里可以使數(shù)據(jù)和錯誤持久化、接受檢查并在隨后的某個時間對其進行重新處理。
在本課中,將創(chuàng)建在第 4 課:添加日志記錄中開發(fā)的包的副本。使用這個新包時,將創(chuàng)建一個示例數(shù)據(jù)文件的損壞版本。損壞的文件將在運行包時強制發(fā)生處理錯誤。
為了處理錯誤數(shù)據(jù),您將添加并配置一個平面文件目標,它會將所有無法在 Lookup Currency Key 轉(zhuǎn)換中找到查找值的行寫入文件。
將錯誤數(shù)據(jù)寫入文件之前,需要包括一個使用腳本獲取錯誤說明的腳本組件。然后,將重新配置 Lookup Currency Key 轉(zhuǎn)換,以便將所有無法處理的數(shù)據(jù)重定向到腳本轉(zhuǎn)換中。
| 重要提示: |
| 本教程需要 AdventureWorksDW 示例數(shù)據(jù)庫。有關如何安裝和部署 AdventureWorksDW 的詳細信息,請參閱運行安裝程序安裝 AdventureWorks 示例數(shù)據(jù)庫和示例。 |
復制 Lesson 4 包
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
更新日期: 2005 年 12 月 5 日
在本任務中,您將為在第 4 課中創(chuàng)建的 Lesson 4.dtsx 包創(chuàng)建一個副本。或者,如果未完成第 4 課,則可以向項目添加本教程中附帶的已完成的 Lesson 4 包,然后再對其進行復制以供使用。您將使用這一新副本來完成第 5 課剩余部分。
創(chuàng)建 Lesson 5 包
默認情況下,復制的包命名為 Lesson 5.dtsx。
添加已完成的 Lesson 4 包
創(chuàng)建損壞的文件
SQL Server 2005
其他版本
此主題尚未評級 評價此主題
更新日期: 2005 年 12 月 5 日
為闡釋如何配置和處理轉(zhuǎn)換錯誤,必須創(chuàng)建示例平面文件,處理該文件時將導致組件失敗。
在本任務中,將創(chuàng)建現(xiàn)有示例平面文件的一個副本。然后,用記事本打開該文件,編輯CurrencyID 列,以確保該列在轉(zhuǎn)換查找期間無法生成匹配項。處理新文件時,查找失敗將導致 Currency Key 查找轉(zhuǎn)換失敗,因此,包的剩余部分將失敗。創(chuàng)建了損壞的示例文件后,將運行包以查看包失敗的情況。
創(chuàng)建損壞的示例平面文件
默認情況下,Currency_VEB.txt 文件安裝在以下文件夾中:c:\Program Files\Microsoft SQL Server\90\Samples\IntegrationServices\Tutorial\Creating a Simple ETL Package\Sample Data。
| 重要提示: |
| 請確保將 Currency_BAD.txt 保存到 c:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Tutorial\Creating a Simple ETL Package\Sample Data 文件夾中。 |
驗證是否將在運行時發(fā)生錯誤
在數(shù)據(jù)流第三次迭代時,Lookup Currency Key 轉(zhuǎn)換將嘗試處理 Currency_BAD.txt 文件,并且該轉(zhuǎn)換將失敗。轉(zhuǎn)換失敗將導致整個包失敗。
[Lookup Currency Key[30]] 錯誤: 在查找期間行沒有生成任何匹配項。
| 注意: |
| 數(shù)字 30 為組件的 ID。該值在生成數(shù)據(jù)流時進行分配,可能與包中的值不同。 |
添加錯誤流重定向
SQL Server 2005
其他版本
0(共 1)對本文的評價是有幫助評價此主題
更新日期: 2006 年 7 月 17 日
如上一個任務中所示,當 Lookup Currency Key 轉(zhuǎn)換嘗試對產(chǎn)生錯誤的已損壞示例平面文件進行處理時,該轉(zhuǎn)換無法生成匹配。 由于轉(zhuǎn)換針對錯誤輸出使用了默認設置,因此,任何錯誤都將導致該轉(zhuǎn)換失敗。當轉(zhuǎn)換失敗時,該包的其余部分也將失敗。
可以使用錯誤輸出將組件配置為將失敗的行重定向到其他處理路徑,而不是允許轉(zhuǎn)換失敗。使用單獨的錯誤處理路徑,您可以執(zhí)行多項任務。 例如,您可能要嘗試清除該數(shù)據(jù),然后重新處理失敗的行。 或者,您可能要將失敗的行與其他錯誤信息保存在一起,以便以后進行驗證和重新處理。
在本任務中,您將 Lookup Currency Key 轉(zhuǎn)換配置為將所有失敗的行重定向到錯誤輸出。 在數(shù)據(jù)流的錯誤分支中,這些行將被寫入文件中。
默認情況下,Integration Services 錯誤輸出中的另外兩列(ErrorCode 和 ErrorColumn)只包含表示錯誤號的數(shù)值代碼以及出現(xiàn)錯誤的列的 ID。 這些數(shù)值的使用具有限制性,而且沒有相應的錯誤說明。
若要增強錯誤輸出的用途,請在包將失敗的行寫入文件之前,使用腳本組件來訪問 Integration Services API 并獲取錯誤說明。
配置錯誤輸出
紅色箭頭表示 Lookup Currency Key轉(zhuǎn)換的錯誤輸出。 通過使用紅色箭頭將轉(zhuǎn)換連接到腳本組件,您可以將所有處理錯誤重定向到腳本組件,然后,該組件會處理這些錯誤并將它們發(fā)送到目標。
Row.ErrorDescription =
Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)
已完成的子例程如以下代碼所示。
Public Overrides Sub Input0_ProcessInputRow(ByVal Row AsInput0Buffer)
Row.ErrorDescription =
Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)
End Sub
添加平面文件目標
SQL Server 2005
其他版本
0(共 1)對本文的評價是有幫助評價此主題
更新日期: 2006 年 12 月 12 日
Lookup Currency Key 轉(zhuǎn)換的錯誤輸出將無法執(zhí)行查找操作的所有數(shù)據(jù)行重定向到腳本轉(zhuǎn)換。為了突顯相關錯誤的信息,腳本轉(zhuǎn)換將運行可獲取錯誤說明的腳本。
在本任務中,請將有關失敗行的所有這些信息保存到分隔的文件中,以便進行后續(xù)處理。若要保存失敗的行,必須針對將包含錯誤數(shù)據(jù)和平面文件目標的文本文件添加并配置平面文件連接管理器,以管理數(shù)據(jù)的實際寫入。
添加并配置平面文件目標
注意,除了源數(shù)據(jù)文件中的列以外,還存在三個新列:ErrorCode、ErrorColumn 和 ErrorDescription。這三列由 Lookup Currency Key 轉(zhuǎn)換的錯誤輸出和獲取錯誤說明轉(zhuǎn)換中的腳本生成,可用于排查失敗行的原因。
測試 Lesson 5 教程包
SQL Server 2005
其他版本
1(共 2)對本文的評價是有幫助評價此主題
更新日期: 2005 年 12 月 5 日
在運行時,損壞的文件 Currency_BAD.txt 將無法在 Currency Key 查找轉(zhuǎn)換中生成匹配。由于 Currency Key 查找的錯誤輸出現(xiàn)在已配置為將失敗的行重定向到新的失敗的行目標,因此該組件不會失敗,并且包會成功地運行。所有失敗的錯誤行都將寫入 ErrorOutput.txt。
在此任務中,您將通過運行該包對已修改的錯誤輸出配置進行測試。包成功執(zhí)行后,您將查看 ErrorOutput.txt 文件的內(nèi)容。
| 注意: |
| 如果不需要在 ErrorOutput.txt 文件中積累錯誤行,則應在包的運行間隔手動刪除文件內(nèi)容。 |
檢查包布局
測試包之前,應當確保 Lesson 5 包中的控制流和數(shù)據(jù)流包含下列關系圖中顯示的對象??刂屏鲬cLesson 2 到 Lesson 4 中的控制流相同。
控制流
數(shù)據(jù)流
運行 Lesson 5 教程包
驗證 ErrorOutput.txt 文件的內(nèi)容
- 在記事本或任何其他文本編輯器中,打開 ErrorOutput.txt 文件。默認的列順序為:AverageRate、CurrencyID、CurrencyDate、EndOfDateRate、ErrorCode、 ErrorColumn、ErrorDescription。
請注意,文件中的所有行都包含不匹配的 CurrencyID 值BAD、ErrorCode 值 -1071607778、ErrorColumn 值 0 以及ErrorDescription 值“在查找期間行沒有生成任何匹配項”。由于此錯誤并不是列所特有的,所以 ErrorColumn 的值設置為 0。它是已失敗的查找操作。 .
轉(zhuǎn)載于:https://www.cnblogs.com/sxhNicole/archive/2012/11/06/SSIS-SQLServer2005.html
總結(jié)
以上是生活随笔為你收集整理的SSIS实用教程(SQLServer2005)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决svn错误:post-commit
- 下一篇: SQL Server Reporting