CREATE PARTITION SCHEME (Transact-SQL)
パーティション テーブルまたはパーティション インデックスのパーティションをファイル グループにマップする構成を、現在のデータベース内に作成します。 パーティション テーブルまたはパーティション インデックスのパーティションの数とドメインは、パーティション関数で決まります。 パーティション構成を作成する前に、まず CREATE PARTITION FUNCTION ステートメントでパーティション関数を作成しておく必要があります。
構文
CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
[ ; ]
引数
partition_scheme_name
パーティション構成の名前です。 パーティション構成の名前は、データベース内で一意であり、かつ識別子のルールに従っている必要があります。partition_function_name
パーティション構成を使用するパーティション関数の名前です。 パーティション関数によって作成されたパーティションは、パーティション構成で指定されたファイル グループにマップされます。partition_function_name はデータベース内に既に存在している必要があります。 1 つのパーティションに FILESTREAM ファイル グループと非 FILESTREAM ファイル グループの両方を含めることはできません。ALL
すべてのパーティションを file_group_name で提供されるファイル グループにマップすることを指定します。[PRIMARY] を指定した場合は、すべてのパーティションをプライマリ ファイル グループにマップすることを指定します。 ALL を指定した場合は、指定できる file_group_name は 1 つだけです。file_group_name | [ PRIMARY ] [ ,...n]
partition_function_name によって指定されたパーティションを保持するファイル グループの名前を指定します。 file_group_name は、データベース内に既に存在している必要があります。[PRIMARY] を指定した場合、パーティションはプライマリ ファイル グループに格納されます。 ALL を指定した場合は、指定できる file_group_name は 1 つだけです。 パーティションは、パーティション 1 から始まり、[,...n] で一覧表示されているファイル グループの順序で、ファイル グループに割り当てられます。 [,...n] では、同じ file_group_name を複数回指定できます。 n が partition_function_name で指定されたパーティションの数を保持するのに十分ではない場合、CREATE PARTITION SCHEME は失敗し、エラーが発生します。
partition_function_name によって生成されるパーティションの数がファイル グループより少ない場合、割り当てられていない最初のファイル グループが NEXT USED とマークされ、情報メッセージに NEXT USED ファイル グループの名前が表示されます。 ALL を指定した場合、唯一の file_group_name に、この partition_function_name に対する NEXT USED プロパティが設定されます。 ALTER PARTITION FUNCTION ステートメントで追加のパーティションを作成した場合は、NEXT USED ファイル グループがそのパーティションを受け取ります。 割り当てられていないファイル グループを追加作成して新しいパーティションを保持するには、ALTER PARTITION SCHEME を使用します。
file_group_name [ 1**,**...n] でプライマリ ファイル グループを指定するときは、PRIMARY を [PRIMARY] のように区切る必要があります。これは、PRIMARY がキーワードであるためです。
権限
CREATE PARTITION SCHEME を実行する場合、下記の権限を使用することができます。
ALTER ANY DATASPACE 権限。 この権限は、既定では、sysadmin 固定サーバー ロールおよび db_owner と db_ddladmin 固定データベース ロールのメンバーに与えられています。
データベースの CONTROL 権限または ALTER 権限 (パーティション構成はこのデータベース内で作成)。
データベースのサーバーの CONTROL SERVER 権限または ALTER ANY DATABASE 権限 (パーティション構成はこのデータベースで作成)。
例
A. 各パーティションを異なるファイル グループにマップするパーティション構成を作成する
次の例では、テーブルまたはインデックスを 4 つのパーティションに分割するパーティション関数を作成します。 その後、4 つのパーティションそれぞれを保持するファイル グループを指定するパーティション構成を作成します。 この例では、ファイル グループが既にデータベースに存在していると仮定しています。
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);
パーティション分割列 col1 でパーティション関数 myRangePF1 を使用するテーブルのパーティションは、次の表に示すように割り当てられます。
ファイル グループ |
test1fg |
test2fg |
test3fg |
test4fg |
パーティション |
1 |
2 |
3 |
4 |
値 |
col1 <= 1 |
col1 > 1 AND col1 <= 100 |
col1 > 100 AND col1 <= 1000 |
col1 > 1000 |
B. 複数のパーティションを同じファイル グループにマップするパーティション構成を作成する
すべてのパーティションを同じファイル グループにマップする場合は、ALL キーワードを使用します。 ただし、複数の (すべてではない) パーティションを同じファイル グループにマップする場合は、次の例に示すように、ファイル グループ名を繰り返し記述する必要があります。
CREATE PARTITION FUNCTION myRangePF2 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO ( test1fg, test1fg, test1fg, test2fg );
パーティション分割列 col1 でパーティション関数 myRangePF2 を使用するテーブルのパーティションは、次の表に示すように割り当てられます。
ファイル グループ |
test1fg |
test1fg |
test1fg |
test2fg |
パーティション |
1 |
2 |
3 |
4 |
値 |
col1 <= 1 |
col1 > 1 AND col1 <= 100 |
col1 > 100 AND col1 <= 1000 |
col1 > 1000 |
C. すべてのパーティションを同じファイル グループにマップするパーティション構成を作成する
次の例では、これまでの例と同じパーティション関数を作成し、すべてのパーティションを同じファイル グループにマップするパーティション構成を作成します。
CREATE PARTITION FUNCTION myRangePF3 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO ( test1fg );
D. 'NEXT USED' ファイル グループを指定するパーティション構成を作成する
次の例では、これまでの例と同じパーティション関数を作成し、関連するパーティション関数によって作成されるパーティションよりも多くのファイル グループを一覧するパーティション構成を作成します。
CREATE PARTITION FUNCTION myRangePF4 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO
CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg)
このステートメントを実行すると、次のメッセージが返されます。
Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.
パーティション関数 myRangePF4 を変更してパーティションを追加すると、ファイル グループ test5fg は新たに作成されたパーティションを受け取ります。
関連項目