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