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