开发人员面对的一个常见问题是如何实现在 Analysis Services 多维数据集中创建分区过程的自动化。分区通常按维度(如时间)进行划分。例如,在 Adventure Works DW 数据库中,以静态方式创建了 2001 年到 2004 年四年的销售数据分区。但是,如果事实数据表开始累积该日期范围以外的数据则会发生什么?如果有了 2005 年和 2006 年的销售数据,是应该由开发人员手动创建新分区,还是有一种实现新分区的创建自动化的方法?
同步 Adventure Works DW 分区包示例是一个说明如何实现新分区的标识和创建自动化的示例包。尽管该示例是专门为 Adventure Works DW 对象编写的,但可以轻松地将该示例扩展以用于类似环境中。基于 Itanium 的操作系统不支持此示例。
![]() |
---|
提供的示例仅供教学使用。这些示例不是针对生产环境设计的,也没有在生产环境中进行测试。对于这些示例,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 联机丛书中的“Installing Sample Integration Services Packages”主题。若要获取最新版本的示例(包括自 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 |
用于标识和返回 RDBMS 中的分区元数据的 Transact-SQL 查询。 此文件包含一个用于执行 SQL 任务的 SQL 查询副本,此文件对于运行该包不是必需的;但是,您会发现通过使用此文本文件能够更轻松地查看和编辑 SQL 语句。 |
运行示例
可以使用 dtexec 实用工具从命令行运行包,或在 Business Intelligence Development Studio 中运行包。
使用 dtexec 运行包
打开命令提示符窗口。
将目录更改为 C: Program Files\Microsoft SQL Server\90\DTS\Binn,即 dtexec 所在的位置。
键入下列命令:
dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\SyncAdvWorksPartitions Sample\SyncAdvPartitions\Sync Partitions.dtsx"
按 Enter。
有关如何使用 dtexec 实用工具运行包的详细信息,请参阅 SQL Server 2005 联机丛书中的“dtexec 实用工具”主题。
在 Business Intelligence Development Studio 中运行包
打开 Business Intelligence Development Studio。
在**“文件”菜单上,指向“打开”,再单击“项目/解决方案”**。
将**“文件类型:”选项设置为“Integration Services 项目文件(*.dtproj)”**,找到 SyncAdvWorksPartitions Sample 文件夹,然后双击名为 Sync Partitions.dtproj 的文件。
在解决方案资源管理器中,右键单击 SSIS Packages 文件夹中的 Sync Partitions.dtsx,再单击**“执行包”**。
有关如何在 Business Intelligence Development Studio 中运行包的详细信息,请参阅 SQL Server 2005 联机丛书中的“运行包”主题。
示例中的组件
下表列出了示例中使用的任务、源和目标。
元素 | 用途 |
---|---|
执行 SQL 任务 |
执行 SQL 任务(获取分区列表)对事实数据表执行 Transact-SQL 查询。该查询标识并返回定义按时间划分的分区的元数据。产生的行集中针对每个分区有一行。 |
Foreach 循环任务 |
Foreach 循环任务(Foreach 分区)遍历执行 SQL 任务中生成的每个行集。在每次遍历中,都将行集内容提取到脚本和 Analysis Services 执行 DDL 任务中使用的包变量中。 |
脚本任务 |
在 Foreach 循环任务中,脚本任务(名为是否已存在分区?)使用分析管理对象 (AMO) 标识 Analysis Services 数据库中是否已存在一个对应的分区。然后使用此查找结果设置 |
Analysis Services 执行 DDL 任务 |
如果需要,Analysis Services 执行 DDL 任务(名为创建分区)执行 |
Analysis Services 连接管理器 |
执行 DDL 任务使用该连接管理器(AS 数据库)连接到包含 Internet Sales、Internet Orders 和 Customer Count 度量值组中分区的 Analysis Services 数据库。 |
OLE DB 连接管理器 |
执行 SQL 任务使用该连接管理器(RDBMS 数据库)查询包含事实数据表 FactInternetSales 和 FactResellerSales 以及维度表 DimTime 的关系数据库。 |
示例结果
由于 Analysis Services 数据库中已存在分区,因此执行包时将不会创建新分区。
如果您希望包在 Analysis Services 数据库中创建新分区,可以从 Adventure Works 多维数据集的以下度量值组中删除分区:Internet Sales、Internet Orders、Reseller Sales、Reseller Orders 或 Customer Count。运行包时,将重新创建从度量值组中删除的分区(尽管没有任何聚合),之后可以重新处理这些分区。
注意 如果您要删除然后重新创建 Analysis Services Adventure Works DW 数据库中的对象,建议您在运行示例包之前备份当前数据库。