【问题标题】:Partition Exchange as publishing technique in SQL Server?分区交换作为 SQL Server 中的发布技术?
【发布时间】:2010-01-06 07:23:41
【问题描述】:

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

(like this example)

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

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

【问题讨论】:

    标签: sql-server data-warehouse publish partitioning


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      是的,这里是 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
      

      更多详情请见the msdn article

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-26
        • 1970-01-01
        • 2023-03-21
        • 2014-02-08
        • 1970-01-01
        相关资源
        最近更新 更多