3

パーティション関数を作成しましたが、テーブルに適用できません。どこが間違っているのかわかりません。

これが私のパーティション関数です:

     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

助けてください。


手順を使用してコードを再投稿する

ピナルの指導は素晴らしいです!ここに簡単な要約があります

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

2 に答える 2

4

テーブルに適用するには、パーティションスキームが必要です。

順序は次のとおりです。

1)ファイルグループを作成します

2)パーティション関数を作成します

3)パーティションスキームをファイルグループにアタッチします(パーティション関数を使用)

4)パーティションスキームでテーブルを作成します

チュートリアルについては、このリンクを確認してください

于 2012-05-15T13:17:26.250 に答える
0

これは単なる命名の問題ですか、すべきではありません:

) ON  CORStaticDateMonthPartition ([CORStaticDateId])

なれ

) ON  StaticDateMonthPartition ([CORStaticDateId])
于 2012-05-15T13:16:24.917 に答える