Delen via


PARTITIESCHEMA MAKEN (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Hiermee maakt u een schema in de huidige database waarmee de partities van een gepartitioneerde tabel of index worden toegewezen aan een of meer bestandsgroepen. De waarden die de rijen van een tabel of index toewijzen aan partities, worden opgegeven in een partitiefunctie. Een partitiefunctie moet eerst worden gemaakt in een CREATE PARTITION FUNCTION instructie voordat u een partitieschema maakt.

Notitie

In Azure SQL Database worden alleen primaire bestandsgroepen ondersteund. Meer informatie over bestandsgroepen en partitioneringsstrategieën in Filegroups.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

partition_scheme_name

De naam van het partitieschema. Namen van partitieschema's moeten uniek zijn binnen de database en moeten voldoen aan de regels voor id's.

partition_function_name

De naam van de partitiefunctie met behulp van het partitieschema. Partities die door de partitiefunctie worden gemaakt, worden toegewezen aan de bestandsgroepen die zijn opgegeven in het partitieschema. partition_function_name moet al bestaan in de database. Een enkele partitie kan niet zowel FILESTREAM- als niet-FILESTREAM-bestandsgroepen bevatten.

ALLE

Hiermee geeft u op dat alle partities worden toegewezen aan de bestandsgroep die is opgegeven in file_group_name, of aan de primaire bestandsgroep als [PRIMARY] is opgegeven. Als ALL is opgegeven, kan slechts één file_group_name worden opgegeven.

file_group_name | [ PRIMAIR ] [ , ...n ]

Hiermee geeft u de namen van de bestandsgroepen voor de partities die zijn opgegeven door partition_function_name. file_group_name moet al aanwezig zijn in de database.

Als [PRIMARY] is opgegeven, wordt de partitie opgeslagen in de primaire bestandsgroep. Als ALL is opgegeven, kan slechts één file_group_name worden opgegeven. Partities worden toegewezen aan bestandsgroepen, te beginnen met partitie 1, in de volgorde waarin de bestandsgroepen worden vermeld in [, ...<n>]. Dezelfde file_group_name kan meer dan één keer in [, ...<n>]worden opgegeven. Als n niet voldoende is voor het aantal partities dat is opgegeven in partition_function_name, mislukt CREATE PARTITION SCHEME met een fout.

Als partition_function_name minder partities genereert dan bestandsgroepen, wordt de eerste niet-toegewezen bestandsgroep gemarkeerd NEXT USEDen wordt in een informatiebericht de naam van de NEXT USED bestandsgroep weergegeven. Als ALL is opgegeven, behoudt de enige file_group_name de NEXT USED eigenschap voor deze partition_function_name. De NEXT USED bestandsgroep ontvangt een extra partitie als deze wordt gemaakt in een ALTER PARTITION FUNCTION instructie. Gebruik ALTER PARTITION SCHEMEom meer niet-toegewezen bestandsgroepen te maken voor het opslaan van nieuwe partities.

Wanneer u de primaire bestandsgroep opgeeft in <file_group_name> [, ...<n>], moet PRIMARY worden gescheiden, zoals in [PRIMARY], omdat het een trefwoord is.

Alleen PRIMARY wordt ondersteund voor SQL Database. Zie voorbeeld E.

Machtigingen

De volgende machtigingen kunnen worden gebruikt om CREATE PARTITION SCHEMEuit te voeren:

  • ALTER ANY DATASPACE machtiging. Deze machtiging is standaard ingesteld op leden van de sysadmin vaste serverfunctie en de db_owner en db_ddladmin vaste databaserollen.

  • CONTROL of ALTER machtiging voor de database waarin het partitieschema wordt gemaakt.

  • CONTROL SERVER of ALTER ANY DATABASE machtiging op de server van de database waarin het partitieschema wordt gemaakt.

Voorbeelden

Een. Een partitieschema maken waarmee elke partitie wordt toegewezen aan een andere bestandsgroep

In het volgende voorbeeld wordt een partitiefunctie gemaakt om een tabel of index te partitioneren in vier partities. Er wordt vervolgens een partitieschema gemaakt waarin de bestandsgroepen worden opgegeven die elk van de vier partities bevatten. In dit voorbeeld wordt ervan uitgegaan dat de bestandsgroepen al bestaan in de database.

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

De partities van een tabel die gebruikmaakt van de partitiefunctie myRangePF1 voor de partitioneringskolom col1 worden toegewezen, zoals wordt weergegeven in de volgende tabel.

Bestandsgroep Verdelen Waarden
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. Een partitieschema maken waarmee meerdere partities aan dezelfde bestandsgroep worden toegewezen

Als alle partities aan dezelfde bestandsgroep zijn toegewezen, gebruikt u het trefwoord ALL. Maar als meerdere, maar niet alle partities zijn toegewezen aan dezelfde bestandsgroep, moet de bestandsnaam worden herhaald, zoals wordt weergegeven in het volgende voorbeeld.

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

De partities van een tabel die gebruikmaakt van de partitiefunctie myRangePF2 voor de partitioneringskolom col1 worden toegewezen, zoals wordt weergegeven in de volgende tabel.

Bestandsgroep Verdelen Waarden
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

C. Een partitieschema maken waarmee alle partities aan dezelfde bestandsgroep worden toegewezen

In het volgende voorbeeld wordt dezelfde partitiefunctie gemaakt als in de vorige voorbeelden. Er wordt een partitieschema gemaakt waarmee alle partities aan dezelfde bestandsgroep worden toegewezen.

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. Een partitieschema maken waarmee een NEXT USED-bestandsgroep wordt opgegeven

In het volgende voorbeeld wordt dezelfde partitiefunctie gemaakt als in de vorige voorbeelden. Er wordt ook een partitieschema gemaakt waarin meer bestandsgroepen worden vermeld dan er partities zijn gemaakt door de bijbehorende partitiefunctie.

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

Als u de instructie uitvoert, wordt het volgende bericht geretourneerd.

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

Als de partitiefunctie myRangePF4 wordt gewijzigd om een partitie toe te voegen, ontvangt de bestandsgroep test5fg de zojuist gemaakte partitie.

E. Een partitieschema alleen maken op PRIMARY

In Azure SQL Database wordt het toevoegen van bestanden en bestandsgroepen niet ondersteund, maar tabelpartitionering wordt ondersteund door alleen de PRIMARY bestandsgroep te partitioneren.

In het volgende voorbeeld wordt een partitiefunctie gemaakt om een tabel of index te partitioneren in vier partities. Er wordt vervolgens een partitieschema gemaakt dat aangeeft dat alle partities worden gemaakt in de PRIMARY bestandsgroep.

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

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