2012-05-15 88 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

我得到了相同的錯誤 –