共用方式為


同步處理 Adventure Works DW 資料分割封裝範例

開發人員所面臨的常見問題是如何自動化在 Analysis Services Cube 內建立資料分割的工作。資料分割通常按維度 (例如時間) 進行切割。例如,在 Adventure Works DW 資料庫中,已建立從 2001 至 2004 四年的靜態銷售資料分割。然而,如果事實資料表開始在該資料範圍外累積資料,會發生什麼事情?如果 2005 及 2006 年的銷售資料到達,是應該由開發人員手動建立新資料分割,還是採取自動建立新資料分割的方法?

「同步處理 Adventure Works DW 資料分割封裝範例」是範例封裝,示範如何自動進行新資料分割的識別和建立。雖然該範例是專為 Adventure Works DW 物件而撰寫的,但可以很容易地擴充該範例使其得以在相似環境中使用。以 Itanium 為基礎的作業系統不支援這個範例。

ms161545.note(zh-tw,SQL.90).gif重要事項:
範例只供教育目的之用。它們不能用於實際執行環境,而且從來沒有在實際執行環境中測試過。Microsoft 不提供對這些範例的技術支援。

需求

執行此範例封裝需要進行下列動作:

  • 範例封裝及其使用的資料檔必須安裝在本機硬碟上。
  • 必須已安裝並具有 AdventureWorks OLTP 資料庫上的管理權限。
  • 如果只想從命令列執行範例封裝,則必須安裝 SQL Server 2005 Integration Services (SSIS)。
  • 若要在「SSIS 設計師」中開啟封裝並執行範例封裝,則必須安裝 Business Intelligence Development Studio。
  • 如果您要在 64 位元的電腦上執行範例封裝,必須將指令碼工作的 PreCompile 屬性設定為 True。若要使用偵錯工具來逐步執行該指令碼,請將屬性設定為 False
  • 如果關聯式資料庫和 Analysis Services 資料庫不在本機電腦上,或者它們已重新命名,則必須修改範例封裝中適當的連接,以指向正確的資料庫位置。您可以在「SSIS 設計師」中直接編輯封裝,或者編輯封裝組態。
  • 若要在封裝中執行指令碼,必須參考「分析管理物件」。這需要資料夾 %windir%\Microsoft.net\framework\v2.0.xxxxx 包含 Microsoft.AnalysisServices.dll 的副本,且 Microsoft Visual Studio for Applications 專案包含對「分析管理物件」的參考。從中複製組件的預設位置是 C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.AnalysisServices.dll。

如需有關如何安裝範例的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<安裝範例 Integration Services 封裝>主題。若要取得最新版的範例,包括自 SQL Server 2005 原始發行版本以來所發佈的新範例,請參閱<SQL Server 2005 範例與範例資料庫 (2006 年 4 月)>(英文)。

範例封裝的位置

如果將範例安裝到預設安裝位置,則「同步處理 Adventure Works DW 資料分割」範例封裝將位於下列資料夾:C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\SyncAdvWorksPartitions Sample\SyncAdvWorksPartitions\

執行此範例封裝需要下列檔案。

檔案 描述

Sync Partitions.dtsx

範例封裝。

Get Partitions List.sql

Transact-SQL 查詢,用於識別和傳回 RDBMS 的資料分割中繼資料。

此檔案包含執行 SQL 工作中使用之 SQL 查詢的副本,而且不需要執行封裝;不過,您可以輕鬆地使用這個文字檔檢視和編輯 SQL 陳述式。

執行範例

從命令列使用 dtexec 公用程式可以執行封裝,或者也可以在 Business Intelligence Development Studio 中執行封裝。

若要使用 dtexec 執行封裝

  1. 開啟 [命令提示字元] 視窗。

  2. 將目錄變更到 dtexec 的位置,即 C: Program Files\Microsoft SQL Server\90\DTS\Binn。

  3. 輸入以下命令:

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\SyncAdvWorksPartitions Sample\SyncAdvPartitions\Sync Partitions.dtsx"
    
  4. ENTER 鍵。

如需有關如何使用 dtexec 公用程式執行封裝的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<dtexec 公用程式>主題。

若要在 Business Intelligence Development Studio 中執行封裝

  1. 開啟 [Business Intelligence Development Studio]。

  2. [檔案] 功能表上,指向 [開啟],然後按一下 [專案/方案]

  3. [檔案類型:] 選項設為 [Integration Services 專案檔案 (*.dtproj)],尋找 [SyncAdvWorksPartitions Sample] 資料夾,然後按兩下名為 Sync Partitions.dtproj 的檔案。

  4. [方案總管] 中,以滑鼠右鍵按一下 [SSIS 封裝] 資料夾中的 Sync Partitions.dtsx,然後按一下 [執行封裝]

如需有關如何在 Business Intelligence Development Studio 中執行封裝的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<執行封裝>主題。

範例中的元件

下表列出範例中所使用的工作、來源和目的地。

元素 用途

執行 SQL 工作

執行 SQL 工作 Get Partition List 會根據事實資料表執行 Transact-SQL 查詢。該查詢可識別並傳回定義按時間切割之資料分割的中繼資料。結果資料列集會包含每個資料分割的資料列。

Foreach 迴圈工作

Foreach 迴圈工作 Foreach Partition 會逐一查看執行 SQL 工作中產生的每個資料列集。每次查看,都會將資料列集內容抽取到指令碼和 Analysis Services 執行 DDL 工作中都有使用的封裝變數中。

指令碼工作

在 Foreach 迴圈工作中,名為 Partition Already There? 的指令碼工作會使用「分析管理物件」(AMO),以識別對應的資料分割是否已存在於 Analysis Services 資料庫中。此尋找然後會用於設定 IsNotPresent 變數。此外,此工作還會擴展 XMLA_Script 變數。此變數還可用於在 Analysis Services 資料庫中建立新的資料分割。

Analysis Services 執行 DDL 工作

如果必要,名為 Create Partition 的 Analysis Services 執行 DDL 工作會執行 XMLA_Script 變數中包含的 XMLA 指令碼,以在 Analysis Services 資料庫中建立新的資料分割。此工作包含條件式優先順序條件約束,其會阻止工作執行,除非 IsNotPresent 變數評估為 true

Analysis Services 連接管理員

執行 DDL 工作會使用連接管理員 AS database,連接包含「網際網路銷售」、「網際網路訂單」和「客戶計數」量值群組中資料分割的 Analysis Services 資料庫。

OLE DB 連接管理員

執行 SQL 工作會使用連接管理員 RDBMS database,查詢包含事實資料表 FactInternetSalesFactResellerSales 和維度資料表 DimTime 的關聯式資料庫。

範例結果

因為在 Analysis Services 資料庫內已經存在資料分割,所以在執行封裝時,不會建立新的資料分割。

如果您要讓封裝在 Analysis Services 資料庫內建立新的資料分割,可以從 Adventure Works Cube 的下列量值群組中刪除資料分割:Internet SalesInternet OrdersReseller SalesReseller OrdersCustomer Count。當執行封裝時,會重新建立已從量值群組中刪除的資料分割 (即使未進行任何彙總),之後便可以重新處理資料分割。

注意 若要在 Analysis Services Adventure Works DW 資料庫中刪除並重新建立物件,建議您在執行該範例封裝前,先備份目前的資料庫。