Dela via


SKAPA PARTITIONSSCHEMA (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Skapar ett schema i den aktuella databasen som mappar partitionerna i en partitionerad tabell eller ett index till en eller flera filgrupper. De värden som mappar raderna i en tabell eller ett index till partitioner anges i en partitionsfunktion. En partitionsfunktion måste först skapas i en CREATE PARTITION FUNCTION-instruktion innan du skapar ett partitionsschema.

Not

I Azure SQL Database stöds endast primära filgrupper. Läs mer om filgrupper och partitioneringsstrategier i Filegroups.

Transact-SQL syntaxkonventioner

Syntax

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ , ...n ] )
[ ; ]

Argument

partition_scheme_name

Namnet på partitionsschemat. Namn på partitionsscheman måste vara unika i databasen och följa reglerna för identifierare.

partition_function_name

Namnet på partitionsfunktionen med hjälp av partitionsschemat. Partitioner som skapats av partitionsfunktionen mappas till de filgrupper som anges i partitionsschemat. partition_function_name måste redan finnas i databasen. En enskild partition kan inte innehålla både FILESTREAM- och icke-FILESTREAM-filgrupper.

ALLA

Anger att alla partitioner mappas till den filgrupp som anges i file_group_nameeller till den primära filgruppen om [PRIMARY] anges. Om ALL anges kan endast en file_group_name anges.

file_group_name | [ PRIMÄR ] [ , ...n ]

Anger namnen på de filgrupper som ska innehålla de partitioner som anges av partition_function_name. file_group_name måste redan finnas i databasen.

Om [PRIMARY] anges lagras partitionen i den primära filgruppen. Om ALL anges kan endast en file_group_name anges. Partitioner tilldelas till filgrupper, från och med partition 1, i den ordning som filgrupperna visas i [, ...<n>]. Samma file_group_name kan anges mer än en gång i [, ...<n>]. Om n inte räcker för att lagra antalet partitioner som anges i partition_function_namemisslyckas CREATE PARTITION SCHEME med ett fel.

Om partition_function_name genererar färre partitioner än filgrupper markeras den första otilldelade filgruppen NEXT USEDoch ett informationsmeddelande visar namngivning av NEXT USED filgrupp. Om ALL anges behåller den enda file_group_name sin egenskap NEXT USED för den här partition_function_name. NEXT USED-filgruppen tar emot en extra partition om en skapas i en ALTER PARTITION FUNCTION-instruktion. Om du vill skapa fler otilldelade filgrupper för att lagra nya partitioner använder du ALTER PARTITION SCHEME.

När du anger den primära filgruppen i <file_group_name> [, ...<n>]måste PRIMARY avgränsas, som i [PRIMARY], eftersom det är ett nyckelord.

Endast PRIMARY stöds för SQL Database. Se exempel E.

Behörigheter

Följande behörigheter kan användas för att köra CREATE PARTITION SCHEME:

  • ALTER ANY DATASPACE behörighet. Den här behörigheten är standard för medlemmar i sysadmin fast serverroll och db_owner och db_ddladmin fasta databasroller.

  • CONTROL eller ALTER behörighet för databasen där partitionsschemat skapas.

  • CONTROL SERVER eller ALTER ANY DATABASE behörighet på servern för databasen där partitionsschemat skapas.

Exempel

A. Skapa ett partitionsschema som mappar varje partition till en annan filgrupp

I följande exempel skapas en partitionsfunktion för att partitionera en tabell eller index i fyra partitioner. Ett partitionsschema skapas sedan som anger vilka filgrupper som ska innehålla var och en av de fyra partitionerna. Det här exemplet förutsätter att filgrupperna redan finns i databasen.

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

Partitionerna i en tabell som använder partitionsfunktionen myRangePF1 på partitioneringskolumnen col1 tilldelas enligt följande tabell.

Filgrupp Skifte Värden
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 OCH col1<= 100
test3fg 3 col1 > 100 OCH col1<= 1000
test4fg 4 col1 > 1000

B. Skapa ett partitionsschema som mappar flera partitioner till samma filgrupp

Om alla partitioner mappas till samma filgrupp använder du nyckelordet ALL. Men om flera, men inte alla, partitioner mappas till samma filgrupp måste filgruppens namn upprepas, enligt följande exempel.

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

Partitionerna i en tabell som använder partitionsfunktionen myRangePF2 på partitioneringskolumnen col1 tilldelas enligt följande tabell.

Filgrupp Skifte Värden
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 OCH col1<= 100
test1fg 3 col1 > 100 OCH col1<= 1000
test2fg 4 col1 > 1000

C. Skapa ett partitionsschema som mappar alla partitioner till samma filgrupp

I följande exempel skapas samma partitionsfunktion som i föregående exempel, och ett partitionsschema skapas som mappar alla partitioner till samma filgrupp.

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. Skapa ett partitionsschema som anger en NEXT USED-filgrupp

I följande exempel skapas samma partitionsfunktion som i föregående exempel. Det skapar också ett partitionsschema som visar fler filgrupper än det finns partitioner som skapats av den associerade partitionsfunktionen.

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

Om du kör -instruktionen returneras följande meddelande.

Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Om partitionsfunktionen myRangePF4 ändras för att lägga till en partition tar filgruppen test5fg emot den nyligen skapade partitionen.

E. Skapa endast ett partitionsschema på PRIMARY

I Azure SQL Database stöds inte att lägga till filer och filgrupper, men tabellpartitionering stöds bara genom partitionering i PRIMARY filgrupp.

I följande exempel skapas en partitionsfunktion för att partitionera en tabell eller index i fyra partitioner. Sedan skapas ett partitionsschema som anger att alla partitioner skapas i PRIMARY-filgruppen.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);