【问题标题】:Create a Partition Function in SQL在 SQL 中创建分区函数
【发布时间】:2012-05-21 09:35:27
【问题描述】:

我创建了一个分区函数,但我无法将它应用到表中。我不确定我哪里出错了。

这是我的分区函数:

     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教程太棒了!这是一个简短的总结

  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])
    

【问题讨论】:

  • 为什么将日期存储为 ints 而不是,嗯,比如 dates?
  • 这是一个提供给我们的 SSAS 多维数据集的事实表。真实日期存在于日期维度中
  • 在 DW 上将日期存储为整数的完美方法
  • 我有幸继承了它

标签: sql sql-server-2008 partitioning


【解决方案1】:

您需要一个分区方案才能应用于表。

顺序是:

1) 创建你的文件组

2) 创建你的分区函数

3) 将分区方案附加到文件组(使用分区功能)

4) 在分区方案上创建表

查看此link 以获得教程

【讨论】:

  • 效果很好,步骤很简单:我会发布我的代码和答案
【解决方案2】:

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

) ON  CORStaticDateMonthPartition ([CORStaticDateId])

成为

) ON  StaticDateMonthPartition ([CORStaticDateId])

【讨论】:

    猜你喜欢
    • 2021-02-16
    • 2022-10-05
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多