0

我熟悉在 Oracle 中使用分区作为向表发布增量添加的技术的概念(在 DW 上下文中)。

像这个例子

例如。数据集市事实表的每日快照会在后台加载到表中的分区中。例如使用日期作为分区键(1 个分区表,只有一个分区)。加载完成并验证内容后,可以将分区作为字典事件“交换”到真正的目标表(1 个分区表,具有许多分区)中。

SQL Server 2008 是否可以使用相同类型的发布模型?

4

2 回答 2

0

表分区在 SQL Server 产品的 Developer 和 Enterprise 版本中可用,并使您能够执行该过程 - 使用存储过程等自动执行此过程有点困难,但可以实现。

于 2010-01-06T08:53:29.633 回答
0

是的,这是 SQL Server 2008 企业版的示例

按年份划分函数1:= Y < 2008, 2:= 2008, 3:= 2009, 4:= 2010, 5:= Y >= 2011

/* First create a partition function */
CREATE PARTITION FUNCTION myPFun (int)
AS RANGE RIGHT FOR VALUES (20080101, 20090101, 20100101, 20110101);
GO

将范围映射到文件组的分区方案。对于此示例,我将所有分区映射到 PRIMARY 文件组。

/* Then a partition scheme */
CREATE PARTITION SCHEME myPRng
AS PARTITION myPFun
ALL TO ( [PRIMARY] ); 
GO

还有一个事实表,按年份分区

/* Fact table partitioned by year */
CREATE TABLE factTbl (DateKey int, Value int)
ON myPRng (DateKey) ;
GO

暂存表,分区方式相同

/* Staging table partitioned the same way as the fact table */
CREATE TABLE stageTbl (DateKey int, Value int)
ON myPRng (DateKey) ;
GO

一些要测试的数据

/* Populate fact table (years 2008, 2009)*/
INSERT  INTO factTbl
        ( DateKey, Value )
VALUES  ( 20080205, 10 )
,       ( 20080711, 25 )
,       ( 20090525, 43 );

/* Populate staging table (year 2010) */
INSERT  INTO stageTbl
        ( DateKey, Value )
VALUES  ( 20100107, 10 );

并将分区从登台表切换到事实表

/* From staging table to fact table */
ALTER TABLE stageTbl SWITCH PARTITION 4 TO factTbl PARTITION 4;
GO

去测试

SELECT * FROM factTbl

退货

DateKey     Value
----------- -----------
20080205    10
20080711    25
20090525    43
20100107    10

有关详细信息,请参阅msdn 文章

于 2010-01-10T18:09:43.460 回答