CREATE PARTITION SCHEME (Transact-SQL)
Crea uno schema nel database corrente per l'esecuzione del mapping tra le partizioni di una tabella o un indice partizionato e i filegroup. Il numero e il dominio delle partizioni di una tabella o un indice partizionato vengono determinati da una funzione di partizione. È innanzitutto necessario creare una funzione di partizione in un'istruzione CREATE PARTITION FUNCTION prima di creare uno schema di partizione.
Sintassi
CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
[ ; ]
Argomenti
partition_scheme_name
Nome dello schema di partizione. I nomi degli schemi di partizione devono essere univoci all'interno del database e conformi alle regole per gli identificatori.partition_function_name
Nome della funzione di partizione che utilizza lo schema di partizione. Le partizioni create dalla funzione di partizione vengono mappate ai filegroup specificati nello schema di partizione. partition_function_name deve esistere nel database. In una singola partizione non possono essere presenti sia filegroup FILESTREAM che filegroup non FILESTREAM.ALL
Specifica che tutte le partizioni vengono mappate al filegroup specificato in file_group_name oppure al filegroup primario se viene specificato [PRIMARY]. Se si specifica ALL, è possibile specificare solo un valore per file_group_name.file_group_name | [ PRIMARY ] [ ,...n]
Specifica i nomi dei filegroup in cui verranno archiviate le partizioni specificate da partition_function_name. file_group_name deve esistere nel database.Se si specifica [PRIMARY], la partizione viene archiviata nel filegroup primario. Se si specifica ALL, è possibile specificare solo un valore per file_group_name. Le partizioni vengono assegnate ai filegroup, a partire dalla partizione 1, nell'ordine in cui i filegroup sono elencati in [,...n]. È possibile specificare lo stesso valore di file_group_name più volte in [,...n]. Se il valore specificato per n non è sufficiente per contenere il numero di partizioni specificate in partition_function_name, l'istruzione CREATE PARTITION SCHEME ha esito negativo e restituisce un errore.
Se partition_function_name genera un numero di partizioni inferiore ai filegroup disponibili, il primo filegroup non assegnato viene contrassegnato come NEXT USED e viene visualizzato un messaggio informativo indicante il filegroup NEXT USED. Se si specifica ALL, file_group_name conserva la proprietà NEXT USED per partition_function_name. Il filegroup NEXT USED riceverà una partizione aggiuntiva se ne viene creata una in un'istruzione ALTER PARTITION FUNCTION. Per creare filegroup non assegnati aggiuntivi per contenere le nuove partizioni, utilizzare ALTER PARTITION SCHEME.
Se si specifica il filegroup primario in file_group_name [ 1**,**...n], è necessario delimitare PRIMARY, ad esempio [PRIMARY], perché è una parola chiave.
Autorizzazioni
Per eseguire l'istruzione CREATE PARTITION SCHEME, è necessario utilizzare le autorizzazioni seguenti:
Autorizzazione ALTER ANY DATASPACE. Questa autorizzazione viene concessa per impostazione predefinita al ruolo predefinito del server sysadmin e ai ruoli predefiniti del database db_owner e db_ddladmin.
Autorizzazione CONTROL o ALTER per il database nel quale viene creato lo schema di partizione.
Autorizzazione CONTROL SERVER o ALTER ANY DATABASE per il server del database nel quale viene creato lo schema di partizione.
Esempi
A. Creazione di uno schema di partizione che mappa le singole partizioni a un filegroup diverso
Nell'esempio seguente viene creata una funzione di partizione per eseguire il partizionamento di una tabella o un indice in quattro partizioni. Viene quindi creato uno schema di partizione che definisce i filegroup in cui archiviare le quattro partizioni. Nell'esempio si presuppone che i filegroup esistano già nel 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);
Le partizioni di una tabella che utilizza la funzione di partizione myRangePF1 nella colonna di partizionamento col1 vengono assegnate come illustrato nella tabella seguente.
Filegroup |
test1fg |
test2fg |
test3fg |
test4fg |
Partizione |
1 |
2 |
3 |
4 |
Valori |
col1 <= 1 |
col1 > 1 AND col1 <= 100 |
col1 > 100 AND col1 <= 1000 |
col1 > 1000 |
B. Creazione di uno schema di partizione che mappa più partizioni allo stesso filegroup
Se tutte le partizioni vengono mappate allo stesso filegroup, utilizzare la parola chiave ALL. Se più partizioni, ma non tutte, vengono mappate allo stesso filegroup, sarà tuttavia necessario ripetere il nome del filegroup come illustrato nell'esempio seguente.
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 );
Le partizioni di una tabella che utilizza la funzione di partizione myRangePF2 nella colonna di partizionamento col1 vengono assegnate come illustrato nella tabella seguente.
Filegroup |
test1fg |
test1fg |
test1fg |
test2fg |
Partizione |
1 |
2 |
3 |
4 |
Valori |
col1 <= 1 |
col1 > 1 AND col1 <= 100 |
col1 > 100 AND col1 <= 1000 |
col1 > 1000 |
C. Creazione di uno schema di partizione che mappa tutte le partizioni allo stesso filegroup
Nell'esempio seguente viene creata la stessa funzione di partizione dell'esempio precedente, ma viene creato uno schema di partizione che mappa tutte le partizioni allo stesso filegroup.
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. Creazione di uno schema di partizione che specifica un filegroup 'NEXT USED
Nell'esempio seguente viene creata la stessa funzione di partizione dell'esempio precedente, ma viene creato uno schema di partizione in cui è elencato un numero di filegroup maggiore delle partizioni create dalla funzione di partizione associata.
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)
L'esecuzione dell'istruzione restituisce il messaggio seguente.
Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.
Se la funzione di partizione myRangePF4 viene modificata in modo da aggiungere una partizione, il filegroup test5fg riceverà la nuova partizione creata.
Vedere anche