Sql server 分区交换作为SQL Server中的发布技术?

Sql server 分区交换作为SQL Server中的发布技术?,sql-server,data-warehouse,publish,partitioning,Sql Server,Data Warehouse,Publish,Partitioning,我熟悉在Oracle中使用分区作为向表(在DW上下文中)发布增量添加的技术的概念 () 比如说。数据集市事实表的每日快照在后台加载到表中的分区中。例如,以日期作为分区键(1个分区表,只有一个分区)。加载完成并验证内容后,分区可以作为字典事件“交换”到真正的目标表(1个分区表,有许多分区)中 SQL Server 2008是否可以使用相同类型的发布模型?SQL Server产品的开发人员版和企业版中提供了表分区,这将使您能够完成该过程-使用存储过程等实现自动化有点困难,但是可以实现的。是,下面是S

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

()

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


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

SQL Server产品的开发人员版和企业版中提供了表分区,这将使您能够完成该过程-使用存储过程等实现自动化有点困难,但是可以实现的。

是,下面是SQLServer2008Enterprise的一个示例

按年份划分的配分函数
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
将范围映射到文件组的分区方案。对于本例,我将把所有分区映射到主文件组

/* 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 );
并将分区从staging表切换到fact表

/* 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
有关更多详细信息,请参见