Share via


Modifica di tabelle e indici partizionati

È possibile modificare tabelle e indici partizionati nei modi seguenti:

  • Modificare una funzione di partizione per ripartizionare qualsiasi tabella o indice che vi partecipa.

  • Modificare uno schema di partizione per designare un filegroup che includa una nuova partizione aggiunta.

  • Convertire una tabella non partizionata in tabella partizionata.

  • Convertire una tabella partizionata in tabella non partizionata.

  • Trasferire dati aggiungendo, spostando o rimuovendo partizioni.

Modifica di una funzione di partizione

È possibile modificare la modalità di partizionamento di una tabella o di un indice aggiungendo o sottraendo, con incrementi di 1, il numero di partizioni specificate nella funzione di partizione della tabella o dell'indice partizionato.

L'aggiunta di una partizione consiste nel "suddividere" una partizione esistente in due partizioni e nel ridefinire i limiti delle nuove partizioni. L'eliminazione di una partizione consiste nell'"unire" i limiti di due partizioni in modo da ottenerne una. L'ultima operazione consiste nel ripopolare una partizione lasciando l'altra non assegnata.

Nota importanteImportante

Quando si aggiunge una partizione, è necessario che sia presente un filegroup contrassegnato con la proprietà NEXT USED per includere la nuova partizione. Per informazioni su come specificare un filegroup NEXT USED in uno schema di partizione, vedere Modifica di uno schema di partizione di seguito in questo argomento.

L'istruzione ALTER PARTITION FUNCTION può essere utilizzata solo per suddividere una partizione in due o per unire due partizioni in una. Per modificare la modalità di partizionamento di una tabella o un indice, ad esempio da 10 partizioni a 5, è possibile utilizzare una delle opzioni seguenti. In base alla configurazione del sistema, tali opzioni possono comportare variazioni nell'utilizzo delle risorse.

  • Creare una nuova tabella partizionata con la funzione di partizione desiderata e quindi inserire i dati dalla tabella precedente a quella nuova utilizzando un'istruzione INSERT INTO...SELECT FROM.

  • Creare un indice cluster partizionato in un heap.

    Nota

    Gli indici partizionati eliminati provocheranno heap partizionati.

  • Eliminare e ricostruire un indice partizionato esistente utilizzando il comando Transact-SQL CREATE INDEX con la clausola DROP EXISTING = ON.

  • Eseguire una sequenza di istruzioni ALTER PARTITION FUNCTION.

SQL Server non fornisce il supporto di replica per la modifica di una funzione di partizione. Se si desidera apportare modifiche a una funzione di partizione nel database di pubblicazione, è necessario procedere manualmente nel database di sottoscrizione.

Per modificare una funzione di partizione

Modifica di uno schema di partizione

È possibile modificare uno schema di partizione designando un filegroup che includa la partizione successiva aggiunta a una tabella partizionata. A tale scopo, è necessario assegnare la proprietà NEXT USED a un filegroup. È possibile assegnare la proprietà NEXT USED a un filegroup vuoto o a uno che contiene già una partizione. In altri termini, un filegroup può includere più di una partizione.

Per modificare uno schema di partizione

Conversione di una tabella non partizionata in tabella partizionata

È possibile trasformare una tabella non partizionata esistente in tabella partizionata in due modi diversi.

Il primo modo consiste nel creare un indice cluster partizionato nella tabella utilizzando l'istruzione CREATE INDEX. Questa operazione è simile alla creazione di un indice cluster in qualsiasi tabella, in quanto in SQL Server la tabella viene essenzialmente eliminata e quindi ricreata in un formato di indice cluster. Se alla tabella è già applicato un indice cluster partizionato, è possibile eliminare l'indice e ricostruirlo in uno schema di partizione utilizzando CREATE INDEX con la clausola DROP EXISTING = ON.

Per informazioni sugli indici cluster, vedere Linee guida per la progettazione di indici cluster.

Il secondo modo consiste nell'utilizzare l'istruzione Transact-SQL ALTER TABLE SWITCH per passare i dati della tabella a una tabella partizionata per intervalli con un'unica partizione. Questa tabella partizionata deve essere già presente prima della conversione e la singola partizione deve essere vuota. Per ulteriori informazioni sullo spostamento di partizioni, vedere Trasferimento efficiente dei dati mediante lo spostamento di partizioni. Dopo che la tabella è stata modificata in tabella partizionata, è possibile modificarne la funzione di partizione per aggiungere partizioni, come descritto in precedenza in Modifica di una funzione di partizione.

Per convertire una tabella esistente in tabella partizionata

Conversione di una tabella partizionata in tabella non partizionata

La modifica di una tabella partizionata in non partizionata comporta la sola modifica della funzione di partizione di una tabella partizionata, affinché la tabella sia costituita da un'unica partizione. Benché tecnicamente la tabella sia ancora partizionata, questo stato è irrilevante per qualsiasi operazione successiva che si desideri eseguire sulla tabella.

Se alla tabella è applicato un indice cluster partizionato, è possibile ottenere lo stesso risultato eliminando l'indice e ricostruendolo come non partizionato. A tale scopo, è possibile utilizzare il comando Transact-SQL CREATE INDEX con la clausola DROP EXISTING = ON.

Per convertire una tabella partizionata in tabella standard senza partizioni

Trasferimento di dati con spostamento di partizioni

L'istruzione Transact-SQL ALTER TABLE...SWITCH consente di trasferire blocchi di dati tra tabelle partizionate in modo rapido ed efficace. Per ulteriori informazioni, vedere Trasferimento efficiente dei dati mediante lo spostamento di partizioni.