我已經創建了分區函數,但我無法將其應用於表。我不知道我哪裏出錯了。在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是偉大的!這裏有一個簡單的總結
爲每個分區
Alter Database [database] Add FileGroup partition_201207
創建分區功能
CREATE PARTITION FUNCTION Partition_Range_CORStaticMonth(int) AS RANGE left FOR VALUES (20120301)
創建添加文件組的分區方案
CREATE PARTITION SCHEME Partition_Scheme_CORStaticMonth AS PARTITION Partition_Range_CORStaticMonth TO (FFF_Fact_vvv_201203)
添加文件到文件組
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]
與分區方案構建表應用
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])
你爲什麼要把日期存儲爲int而不是呃說日期呢? –
這是一個提供給我們的SSAS多維數據集的事實表。真正的日期存在於日期維中 –
將日期作爲整數存儲在DW中的完美方法 – Diego