2012-05-15 49 views
1

我已经创建了分区函数,但我无法将其应用于表。我不知道我哪里出错了。在SQL中创建分区函数

这里是我的分区功能:

 CREATE PARTITION FUNCTION StaticDateMonthPartition (int) 
    AS RANGE left 
    FOR VALUES  ( 
        20120301, 
        20120401, 
        20120501, 
        20120601, 
        20120701, 
        20120801, 
        20120901, 
        20121001, 
        20121101, 
        20121201, 
        20130101, 
        20130201 
        ) 

尝试应用到这个表:

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[partition_OLAP_Fact_vvv]') AND type in (N'U')) 
    DROP TABLE [dbo].[partition_OLAP_Fact_vvv] 
    GO 

    CREATE TABLE [dbo].[partition_OLAP_Fact_vvv] 
    (
     FFFFactvvvId   bigint, 
     CORStaticDateId   int, 
     CORVersionvvvId   bigint, 
     vvvCount    tinyint, 
     UPB      decimal(18, 2) 
    ) ON CORStaticDateMonthPartition ([CORStaticDateId]) 

但是当我尝试执行表脚本我得到这个错误:

Invalid partition scheme 'CORStaticDateMonthPartition' specified 

请帮忙。


转贴我有步骤的代码

Pinal's tutoral是伟大的!这里有一个简单的总结

  1. 为每个分区

    Alter Database [database] Add FileGroup partition_201207 
    
  2. 创建分区功能

    CREATE PARTITION FUNCTION Partition_Range_CORStaticMonth(int) 
    AS RANGE left 
    FOR VALUES (20120301) 
    
  3. 创建添加文件组的分区方案

    CREATE PARTITION SCHEME Partition_Scheme_CORStaticMonth 
    AS PARTITION Partition_Range_CORStaticMonth 
    TO (FFF_Fact_vvv_201203) 
    
  4. 添加文件到文件组

    ALTER DATABASE [database] 
    ADD FILE( 
         NAME = N'FFF_Fact_vvv_201203', 
         FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\FFF_Fact_vvv_201203.ndf' , 
         SIZE = 2048KB , 
         FILEGROWTH = 1024KB 
         ) 
    TO FILEGROUP [FFF_Fact_vvv_201203] 
    
  5. 与分区方案构建表应用

    IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[partition_Table]') AND type in (N'U')) 
    DROP TABLE [dbo].[partition_Table] 
    GO 
    
    CREATE TABLE [dbo].[partition_Table] 
    (
        CORStaticDateId   int 
    ) ON Partition_Scheme_CORStaticMonth ([CORStaticDateId]) 
    
+0

你为什么要把日期存储为int而不是呃说日期呢? –

+1

这是一个提供给我们的SSAS多维数据集的事实表。真正的日期存在于日期维中 –

+0

将日期作为整数存储在DW中的完美方法 – Diego

回答

2

您需要将分区方案应用于表。

顺序为:

1)创建文件组

2)创建分区功能

3)将分区方案至文件组(使用分区功能)

4)在分区上创建表计划

检查此link的教程

+0

工作良好,步骤很简单:我将发布我的代码和答案 –

0

这只是一个命名的问题,不应该:

) ON CORStaticDateMonthPartition ([CORStaticDateId]) 

be

) ON StaticDateMonthPartition ([CORStaticDateId]) 
+0

我得到了相同的错误 –