PARTITIESCHEMA MAKEN (Transact-SQL)
van toepassing op:SQL Server
Azure SQL Database
Azure 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 USED
en 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 SCHEME
om 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 SCHEME
uit 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
ofALTER
machtiging voor de database waarin het partitieschema wordt gemaakt.CONTROL SERVER
ofALTER 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]);