CREATE PARTITION FUNCTION (Transact-SQL)
Data aggiornamento: 17 luglio 2006
Crea una funzione nel database corrente che inserisce le righe di una tabella o di un indice in partizioni in base ai valori della colonna specificata. L'utilizzo di CREATE PARTITION FUNCTION rappresenta il primo passaggio per la creazione di una tabella o di un indice partizionato.
Convenzioni della sintassi Transact-SQL
Sintassi
CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
AS RANGE [ LEFT | RIGHT ]
FOR VALUES ( [ boundary_value [ ,...n ] ] )
[ ; ]
Argomenti
- partition_function_name
Nome della funzione di partizione. I nomi delle funzioni di partizione devono essere univoci nel database e devono essere conformi alle regole per gli identificatori.
input_parameter_type
Tipo di dati della colonna utilizzata per il partizionamento. Come colonne di partizionamento possono essere utilizzati tutti i tipi di dati, tranne text, ntext, image, xml, timestamp, varchar(max), nvarchar(max), varbinary(max), i tipi di dati alias o i tipi CLR definiti dall'utente.La colonna effettiva, ovvero la colonna di partizionamento, è specificata nell'istruzione CREATE TABLE o CREATE INDEX.
boundary_value
Specifica i valori limite per ogni partizione di una tabella o di un indice partizionato che utilizza partition_function_name. Se boundary_value è vuoto, la funzione di partizione inserisce l'intera tabella o l'intero indice che utilizza partition_function_name in un'unica partizione. È possibile utilizzare una sola colonna di partizionamento, specificata in un'istruzione CREATE TABLE o CREATE INDEX.boundary_value è un'espressione costante che può fare riferimento a variabili, incluse variabili di tipi definiti dall'utente o funzioni e funzioni definite dall'utente. Non può fare riferimento a espressioni Transact-SQL. boundary_value deve corrispondere al tipo di dati specificato in input_parameter_type, oppure deve essere convertibile in esso in modo implicito, e durante la conversione implicita non può venire troncato in modo tale che le dimensioni e la scala del valore non corrispondano al relativo input_parameter_type.
[!NOTA] Se boundary_value è costituito dal valore letterale datetime o smalldatetime, tale valore viene valutato presupponendo che la lingua di sessione sia us_english. Questo comportamento è obsoleto. Per garantire che la definizione della funzione di partizione funzioni nel modo previsto per tutte le lingue di sessione, è consigliabile utilizzare costanti interpretate nello stesso modo per le impostazioni di tutte le lingue, ad esempio il formato aaaammgg, oppure convertire esplicitamente i valori letterali in uno stile specifico. Per ulteriori informazioni, vedere Scrittura di istruzioni Transact-SQL internazionali. Per determinare la lingua di sessione del server, eseguire
SELECT @@LANGUAGE
.
- ...n
Specifica il numero di valori forniti da boundary_value (il massimo è 999). Il numero di partizioni create è uguale a n + 1. Non è necessario elencare i valori in ordine. Se i valori non sono in ordine, Microsoft Motore di database di SQL Server 2005 li ordina, crea la funzione e restituisce un avviso che informa che i valori non sono in ordine. Viene restituito un errore se n include valori duplicati.
- LEFT | RIGHT
Specifica il lato (sinistro o destro) di ogni intervallo di valori limite a cui appartiene boundary_value [ ,...n ], quando i valori dell'intervallo vengono ordinati da Motore di database in senso crescente da sinistra a destra. Se omesso, il valore predefinito è LEFT. Per ulteriori informazioni, vedere Esempi.
Osservazioni
L'ambito di una funzione di partizione è limitato al database in cui la funzione è stata creata. Nel database le funzioni di partizione sono contenute in uno spazio dei nomi distinto rispetto alle altre funzioni.
Tutte le righe la cui colonna di partizionamento contiene valori NULL vengono inserite nella prima partizione a sinistra, a meno che non sia specificato NULL come valore limite e indicato RIGHT. In questo caso la prima partizione a sinistra sarà una partizione vuota e i valori NULL verranno inseriti nella partizione successiva.
Autorizzazioni
Per eseguire CREATE PARTITION FUNCTION è possibile utilizzare qualsiasi delle autorizzazioni seguenti:
- Autorizzazione ALTER ANY DATASPACE. Questa autorizzazione viene assegnata per impostazione predefinita ai membri del ruolo predefinito del server sysadmin e dei ruoli predefiniti del database db_owner e db_ddladmin.
- Autorizzazione CONTROL o ALTER per il database in cui viene creata la funzione di partizione.
- Autorizzazione CONTROL SERVER o ALTER ANY DATABASE per il server del database in cui viene creata la funzione di partizione.
Esempi
A. Creazione di una funzione di partizione RANGE LEFT in una colonna int
La funzione di partizione seguente crea quattro partizioni in una tabella o un indice.
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
Nella tabella seguente viene illustrato come verrebbe partizionata una tabella che utilizza questa funzione di partizione nella colonna di partizionamento col1.
Partizione | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Valori |
col1 <= |
col1 > |
col1 > |
col1 > |
A. Creazione di una funzione di partizione RANGE RIGHT in una colonna int
Nella funzione di partizione seguente vengono utilizzati gli stessi valori di boundary_value [ ,...n ] dell'esempio precedente, con la differenza che viene specificato RANGE RIGHT.
CREATE PARTITION FUNCTION myRangePF2 (int)
AS RANGE RIGHT FOR VALUES (1, 100, 1000);
Nella tabella seguente viene illustrato come verrebbe partizionata una tabella che utilizza questa funzione di partizione nella colonna di partizionamento col1.
Partizione | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Valori |
col1 < |
col1 >= |
col1 >= |
col1 >= |
C. Creazione di una funzione di partizione RANGE RIGHT in una colonna datetime
Nella funzione di partizione seguente viene partizionato un indice o una tabella in 12 partizioni, una per ogni mese dei valori di un anno in una colonna datetime.
CREATE PARTITION FUNCTION [myDateRangePF1] (datetime)
AS RANGE RIGHT FOR VALUES ('20030201', '20030301', '20030401',
'20030501', '20030601', '20030701', '20030801',
'20030901', '20031001', '20031101', '20031201');
Nella tabella seguente viene illustrato come verrebbe partizionato un indice o una tabella che utilizza questa funzione di partizione nella colonna di partizionamento datecol.
Partizione | 1 | 2 | ... | 11 | 12 |
---|---|---|---|---|---|
Valori |
datecol < |
datecol >= |
datecol >= |
col1 >= |
D. Creazione di una funzione di partizione in una colonna char
La funzione di partizione seguente crea quattro partizioni in una tabella o un indice.
CREATE PARTITION FUNCTION myRangePF3 (char(20))
AS RANGE RIGHT FOR VALUES ('EX', 'RXE', 'XR');
Nella tabella seguente viene illustrato come verrebbe partizionata una tabella che utilizza questa funzione di partizione nella colonna di partizionamento col1.
Partizione | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Valori |
col1 < |
col1 >= |
col1 >= |
col1 >= |
Vedere anche
Riferimento
$PARTITION (Transact-SQL)
ALTER PARTITION FUNCTION (Transact-SQL)
DROP PARTITION FUNCTION (Transact-SQL)
CREATE PARTITION SCHEME (Transact-SQL)
CREATE TABLE (Transact-SQL)
CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.partition_functions (Transact-SQL)
sys.partition_parameters (Transact-SQL)
sys.partition_range_values (Transact-SQL)
sys.partitions (Transact-SQL)
sys.tables (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
17 luglio 2006 |
|