AWDataWarehouseRefresh 封裝範例
AWDataWarehouseRefresh 範例封裝說明了如何使用來自 AdventureWorks 資料庫的資料,在新 AdvWorksDWX 資料庫中建立並填入使用者資料表。會在執行數個 Transact-SQL 指令碼以建立資料表之後,執行數個「執行 SQL」工作以填入資料表。
重要事項: |
---|
範例只供教育目的之用。它們不能用於實際執行環境,而且從來沒有在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。 |
需求
執行此範例封裝需要進行下列動作:
- 範例封裝及其使用的資料檔必須安裝在本機硬碟上。
- 必須已安裝並具有 AdventureWorks OLTP 資料庫上的管理權限。
- 如果只想從命令列執行範例封裝,則必須安裝 SQL Server 2005 Integration Services (SSIS)。
- 若要在「SSIS 設計師」中開啟封裝並執行範例封裝,則必須安裝 Business Intelligence Development Studio。
執行此範例封裝需要下列檔案。
檔案 | 描述 |
---|---|
AWDWRefresh.dtsx |
範例封裝。 |
如需有關如何安裝範例的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<安裝範例 Integration Services 封裝>。若要取得最新版的範例,包括自 SQL Server 2005 原始發行版本以來所發佈的新範例,請參閱<SQL Server 2005 範例與範例資料庫 (2006 年 4 月)>(英文)。
範例封裝的位置
如果範例已安裝在預設位置,則 AWDataWarehouseRefresh 範例封裝和資料檔會位於下列資料夾中:
C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\AWDataWarehouseRefresh\
附註: |
---|
如果您變更了專案的安裝位置,則必須修改封裝中的 BasePath 和 DataFilePath 變數。 |
執行範例
從命令列使用 dtexec 公用程式可以執行封裝,或者也可以在 Business Intelligence Development Studio 中執行封裝。
若要使用 dtexec 執行封裝
開啟 [命令提示字元] 視窗。
使用**「變更目錄」**命令 (cd),將目錄變更為 C:\Program Files\Microsoft SQL Server\90\DTS\Binn,即 dtexec 的位置。
輸入以下命令:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\AWDataWarehouseRefresh\AWDataWarehouseRefresh\AWDWRefresh.dtsx"
按 ENTER 鍵。
如需有關如何使用 dtexec 公用程式執行封裝的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<dtexec 公用程式>主題。
若要在 Business Intelligence Development Studio 中執行封裝
開啟 [Business Intelligence Development Studio]。
在 [檔案] 功能表上,指向 [開啟],然後按一下 [專案/方案]。
設定 [檔案類型:] 為 [Integration Services 專案檔案 (*.dtproj)],找到 AWDataWarehouseRefresh 資料夾,然後按兩下名為 AWDataWarehouseRefresh.dtproj 的檔案。
在 [方案總管] 中,以滑鼠右鍵按一下 [SSIS 封裝] 資料夾中的 AWDWRefresh.dtsx,然後再按 [執行封裝]。
範例中的元件
下表列出該範例中所使用的工作、容器、資料來源與目的地,以及轉換。
您可以透過在 [控制流程] 索引標籤上選取任何物件,然後按 Shift+TAB 逐一向前讀取物件的方式,瀏覽封裝中的物件。您也可以按一下位於 [控制流程] 設計介面右下角之四個方向的定位器箭號,然後透過封裝定位檢視視窗,這樣就能看見封裝的大圖片。
由於此封裝表示實際執行資料庫的範例,因此邏輯群組中會收集許多物件和容器。您可以摺疊群組,這樣可輕鬆地檢視整個封裝,或展開群組,以便更好地查看特定群組中的項目。封裝中的工作和容器依其群組列於此處。
資料庫和資料表群組
Database and tables 群組包含「時序」容器、「Foreach 迴圈」容器和「執行 SQL」工作。這些容器進而包含這個資料表中列出的工作。
元素 | 用途 |
---|---|
時序容器 |
Prepare New Database「時序」容器,包含三個可建立新的資料庫並設定資料庫選項的「執行 SQL」工作。順序是跟在「Foreach 迴圈」容器和另一個「執行 SQL」工作之後。 |
執行 SQL 工作 |
Drop database「執行 SQL」工作,會刪除 AdvWorksDWX 的任何現有執行個體。 |
執行 SQL 工作 |
Create database「執行 SQL」工作,會建立新的資料庫 AdvWorksDWX。 |
執行 SQL 工作 |
Set database options「執行 SQL」工作,會執行 ALTER DATABASE 陳述式。 |
Foreach 迴圈容器 |
Create tables「Foreach 迴圈」容器包含「執行 SQL」工作,該工作會從符合檔案篩選條件 CreateTable-*.sql 的檔案中執行 SQL 陳述式。 |
執行 SQL 工作 |
透過從「Foreach 迴圈」中指定的檔案中執行 SQL 陳述式,在 AdvWorksDWX 資料庫中建立資料表。 |
執行 SQL 工作 |
Create udfMinimumDate function「執行 SQL」工作,會以直接輸入 SQL 陳述式的方式建立使用者自訂函數。 |
暫存資料表群組
Temporary Tables 群組包含兩個「Foreach 迴圈」,每個都包含可以透過檔案中之 SQL 陳述式執行迴圈的「執行 SQL 工作」。包含檔案的資料夾位置是由檔案連接管理員所定義。
元素 | 用途 |
---|---|
Foreach 迴圈容器 |
Drop temp tables「Foreach 迴圈」包含「執行 SQL」工作,該工作會從符合檔案篩選條件 DropTempTable-*.sql 的檔案中執行 SQL 陳述式。 |
執行 SQL 工作 |
透過從「Foreach 迴圈」中指定的檔案中執行 SQL 陳述式,在 AdventureWorks 資料庫中卸除暫存資料表。 |
Foreach 迴圈容器 |
Create temp tables「Foreach 迴圈」包含「執行 SQL」工作,該工作會從符合檔案篩選條件 CreateTempTable-*.sql 的檔案中執行 SQL 陳述式。 |
執行 SQL 工作 |
透過從「Foreach 迴圈」中指定的檔案中執行 SQL 陳述式,在 AdventureWorks 資料庫中建立暫存資料表。 |
載入暫存資料表群組
Load temporary tables 群組包含七個「大量插入」工作,該工作會將 .csv 檔案中的資料載入至 AdventureWorks 資料庫中的暫存資料表。
元素 | 用途 |
---|---|
大量插入工作 |
Bulk Insert tempProductSubcategory-ForeignNames「大量插入」工作會將資料插入至暫存資料表。 |
大量插入工作 |
Bulk Insert tempProduct-ForeignNames「大量插入」工作會將資料插入至暫存資料表。 |
大量插入工作 |
Bulk Insert tempStore-MinPayment「大量插入」工作會將資料插入至暫存資料表。 |
大量插入工作 |
Bulk Insert tempProductCategory-ForeignNames「大量插入」工作會將資料插入至暫存資料表。 |
大量插入工作 |
Bulk Insert tempCustomer-YearlyIncome「大量插入」工作會將資料插入至暫存資料表。 |
大量插入工作 |
Bulk Insert tempIndividual-ForeignData「大量插入」工作會將資料插入至暫存資料表。 |
大量插入工作 |
Bulk Insert tempSpecialOffer-ForeignData「大量插入」工作會將資料插入至暫存資料表。 |
建立索引鍵和索引群組
Create Keys and Indexes 群組包含四個由優先順序條件約束連接的「執行 SQL」工作,還包含「Foreach 迴圈」容器。
元素 | 用途 |
---|---|
執行 SQL 工作 |
Add Primary Keys「執行 SQL」工作,會在 AdvWorksDWX 中的新資料表上建立主索引鍵。 |
執行 SQL 工作 |
Add Indexes「執行 SQL」工作,會對 AdvWorksDWX 中的新資料表進行索引。 |
執行 SQL 工作 |
Add Foreign Key Constraints「執行 SQL」工作,會將條件約束加入至 AdvWorksDWX 中的新資料表。 |
執行 SQL 工作 |
Drop udfMinimumDate function「執行 SQL」工作,會從 AdvWorksDWX 中刪除使用者自訂功能。 |
Foreach 迴圈容器 |
Drop temp tables 1「Foreach 迴圈」容器包含「執行 SQL」工作,該工作會從符合檔案篩選條件 DropTempTable-*.sql 的檔案中執行 SQL 陳述式。 |
執行 SQL 工作 |
透過從「Foreach 迴圈」中指定的檔案中執行 SQL 陳述式,從 AdventureWorks 資料庫中刪除暫存資料表。 |
取消群組工作
封裝還包含 25 個不屬於任何群組的工作,但會執行在其他群組中工作之間移動資料的作業。
元素 | 用途 |
---|---|
大量插入工作 |
Bulk Insert FactFinance「大量插入」工作,會從 .csv 檔案將資料載入 AdvWorksDWX 中的事實資料表。 |
大量插入工作 |
Bulk Insert DimAccount「大量插入」工作,會從 .csv 檔案將資料載入 AdvWorksDWX 中的維度資料表。 |
大量插入工作 |
Bulk Insert AdventureWorksDWBuildVersion「大量插入」工作,會更新 AdvWorksDWX 中資料倉儲的版本資訊。 |
資料流程工作 |
Data Flow Task - DimPromotion「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會針對 AdventureWorks 執行查詢以識別促銷,並將結果寫入 AdvWorkDWX 中的維度資料表。 |
大量插入工作 |
Bulk Insert DimOrganization「大量插入」工作,會從 .csv 檔案將資料載入 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimSalesReason「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會針對 AdventureWorks 執行查詢以查閱銷售原因,並將結果寫入 AdvWorkDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimReseller「資料流程」工作,包含 OLE DB 來源、「資料轉換」和 SQL Server 目的地。資料流程會針對 AdventureWorks 執行複雜查詢 (包括條件陳述式和查閱),並將結果寫入 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimEmployee「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會在「人力資源」資料表上執行查閱、指派銷售人員識別碼,並將結果寫入 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimCurrency「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會從目前資料表中擷取資料、變更資料行名稱,並將資料寫入 AdvWorksDWX 中的維度資料表。 |
大量插入工作 |
Bulk Insert DimScenario「大量插入」工作,會從 .csv 檔案將資料載入 AdvWorksDWX 中的維度資料表。 |
大量插入工作 |
Bulk Insert - DimTime「大量插入」工作,會從 .csv 檔案將資料載入 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - FactSalesQuota「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會擷取銷售人員的配額,並更新 AdvWorksDXW 中的事實資料表。 |
資料流程工作 |
Data Flow Task - FactCurrencyRate「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會使用 SQL 陳述式擷取並轉換貨幣資訊,然後更新 AdvWorksDXW 中的事實資料表。 |
資料流程工作 |
Data Flow Task - DimProduct「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會使用 SQL 陳述式對暫存資料表中的資料執行複雜處理,然後更新 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimProductCategory「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會將外國產品類別對應到英文類別名稱,並更新 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimProductsSubcategory「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會從參考資料表中擷取產品子類別的翻譯,然後更新 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimGeography「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會在參考資料表中查閱地址,然後將結果寫入 AdvWorkDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimCustomer「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程接受多個輸入 (來自 DimGeography 以及兩個暫存資料表的資料),並擷取資料以更新 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - FactInternetSalesReason「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會從 AdventureWorks 中擷取資料,並更新 AdvWorksDWX 中的事實資料表。 |
資料流程工作 |
Data Flow Task - DimSalesTerritory 1「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會查閱區域的區域碼,並將結果寫入 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimSalesTerritory 2「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會將國家 (地區) 對應加入至上一個資料流程中處理的資料。 |
資料流程工作 |
Data Flow Task - DimDepartmentGroup「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會將所有群組的名稱變更為「公司」,並將值寫入 AdvWorksDWX 中的維度資料表。 |
資料流程工作 |
Data Flow Task - DimDepartmentGroup 1「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會在人力資源資料表中查閱群組名稱,並更新 AdvWorksDWX 之維度資料表中的值。 |
資料流程工作 |
Data Flow Task - FactInternetSales「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會從其他工作接受多個輸入 (包括新建立的使用者自訂功能),並更新 AdvWorksDWX 中的事實資料表。 |
資料流程工作 |
Data Flow Task - FactResellerSales「資料流程」工作,包含 OLE DB 來源和 SQL Server 目的地。資料流程會從其他工作接受多個輸入 (包括新建立的使用者自訂功能),並更新 AdvWorksDWX 中的事實資料表。 |
範例結果
使用 dtexec 公用程式執行封裝之後,您應查看輸出,如下所示。
範例輸出:
Microsoft (R) SQL Server 執行封裝公用程式
9.00.xxxx 版 (適用於 32 位元)
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
開始:1:03:24 PM
進度: 2005-04-12 13:03:35.14
來源:執行 SQL 工作
執行查詢 "IF EXISTS (SELECT * FROM [sys].[tables] WHERE [nam":100% 完成
進度結束
進度: 2005-04-12 13:03:35.15
來源:執行 SQL 工作
執行查詢 "IF EXISTS (SELECT * FROM [sys].[tables] WHERE [nam":100% 完成
進度結束
…
進度:2005-04-12 13:05:43.77
來源:加入索引
執行查詢 "CREATE UNIQUE INDEX [AK_DimAccount_AccountCodeAlte":100% 完成
進度結束
進度: 2005-04-12 13:05:46.00
來源:加入外部索引鍵條件約束
執行查詢 "ALTER TABLE [dbo].[DimAccount] ADD
CONSTRAINT [F":100% 完成
進度結束
DTExec:封裝執行傳回 DTSER_SUCCESS (0)。
開始:1:03:24 PM
完成:1:05:46 PM
經過時間:141.969 秒