Modificare una funzione di partizioneModify a Partition Function

È possibile modificare la modalità di partizionamento di una tabella o di un indice in SQL Server 2017SQL Server 2017 aggiungendo o sottraendo, con incrementi di 1, il numero di partizioni specificate nella funzione di partizione della tabella o dell'indice partizionato tramite Transact-SQLTransact-SQL.You can change the way a table or index is partitioned in SQL Server 2017SQL Server 2017 by adding or subtracting the number of partitions specified, in increments of 1, in the partition function of the partitioned table or index by using Transact-SQLTransact-SQL. L'aggiunta di una partizione consiste nel "suddividere" una partizione esistente in due partizioni e nel ridefinire i limiti delle nuove partizioni.When you add a partition, you do so by "splitting" an existing partition into two partitions and redefining the boundaries of the new partitions. L'eliminazione di una partizione consiste nell'"unire" i limiti di due partizioni in modo da ottenerne una.When you drop a partition, you do so by "merging" the boundaries of two partitions into one. L'ultima operazione consiste nel ripopolare una partizione lasciando l'altra non assegnata.This last action repopulates one partition and leaves the other partition unassigned.

Attenzione

La stessa funzione di partizione può essere utilizzata da più tabelle o indici.More than one table or index can use the same partition function. La modifica di una funzione di partizione viene applicata a tutti gli elementi in un'unica transazione.When you modify a partition function, you affect all of them in a single transaction. Controllare le dipendenze della funzione di partizione prima di modificarla.Check the partition function’s dependencies before modifying it.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • L'istruzione ALTER PARTITION FUNCTION può essere utilizzata solo per suddividere una partizione in due o per unire due partizioni in una.ALTER PARTITION FUNCTION can only be used for splitting one partition into two, or for merging two partitions into one. 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:To change the way a table or index is partitioned (from 10 partitions to 5, for example), you can use any one of the following options:

    • Creare una nuova tabella partizionata utilizzando la funzione di partizione desiderata e quindi inserire i dati della vecchia tabella in quella nuova utilizzando un'istruzione INSERT INTO ... SELECT FROM Transact-SQLTransact-SQL o la Gestione guidata partizione in SQL Server Management StudioSQL Server Management Studio.Create a new partitioned table with the desired partition function, and then insert the data from the old table into the new table by using either an INSERT INTO ... SELECT FROM Transact-SQLTransact-SQL statement or the Manage Partition Wizard in SQL Server Management StudioSQL Server Management Studio.

    • Creazione di un indice cluster partizionato su un heap.Create a partitioned clustered index on a heap.

      Nota

      L'eliminazione di un indice cluster partizionato ha come risultato un heap partizionato.Dropping a partitioned clustered index results in a partitioned heap.

    • Eliminazione e ricompilazione di un indice partizionato esistente mediante l'utilizzo dell'istruzione Transact-SQLTransact-SQL CREATE INDEX con la clausola DROP EXISTING = ON.Drop and rebuild an existing partitioned index by using the Transact-SQLTransact-SQL CREATE INDEX statement with the DROP EXISTING = ON clause.

    • Esecuzione di una sequenza di istruzioni ALTER PARTITION FUNCTION.Perform a sequence of ALTER PARTITION FUNCTION statements.

  • SQL ServerSQL Server non fornisce il supporto di replica per la modifica di una funzione di partizione. does not provide replication support for modifying a partition function. Se si desidera apportare modifiche a una funzione di partizione nel database di pubblicazione, è necessario procedere manualmente nel database di sottoscrizione.If you want to make changes to a partition function in the publication database, you must do this manually in the subscription database.

  • Tutti i filegroup interessati dall'istruzione ALTER PARTITION FUNCTION devono essere online.All filegroups that are affected by ALTER PARITITION FUNCTION must be online.

Sicurezza Security

Autorizzazioni Permissions

Per eseguire l'istruzione ALTER PARTITION FUNCTION, è necessario utilizzare le autorizzazioni seguenti:Any one of the following permissions can be used to execute ALTER PARTITION FUNCTION:

  • Autorizzazione ALTER ANY DATASPACE.ALTER ANY DATASPACE permission. Questa autorizzazione viene concessa per impostazione predefinita al ruolo predefinito del server sysadmin e ai ruoli predefiniti del database db_owner e db_ddladmin .This permission defaults to members of the sysadmin fixed server role and the db_owner and db_ddladmin fixed database roles.

  • Autorizzazione CONTROL o ALTER nel database in cui la funzione di partizione è stata creata.CONTROL or ALTER permission on the database in which the partition function was created.

  • Autorizzazione CONTROL SERVER o ALTER ANY DATABASE nel server del database in cui la funzione di partizione è stata creata.CONTROL SERVER or ALTER ANY DATABASE permission on the server of the database in which the partition function was created.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per modificare una funzione di partizione:To modify a partition function:

Non è possibile eseguire questa azione specifica tramite SQL Server Management StudioSQL Server Management Studio.This specific action cannot be performed using SQL Server Management StudioSQL Server Management Studio. Per modificare una funzione di partizione, è innanzitutto necessario eliminare la funzione e crearne quindi una nuova con le proprietà desiderate tramite la Creazione guidata partizione.In order to modify a partition function, you must first delete the function and then create a new one with the desired properties using the Create Partition Wizard. Per ulteriori informazioni, vedereFor more information, see

Per eliminare una funzione di partizioneTo delete a partition function

  1. Espandere il database in cui si desidera eliminare la funzione di partizione ed espandere quindi la cartella Archiviazione .Expand the database where you want to delete the partition function and then expand the Storage folder.

  2. Espandere la cartella Funzioni di partizione .Expand the Partition Functions folder.

  3. Fare clic con il pulsante destro del mouse sulla funzione di partizione che si vuole eliminare e scegliere Elimina.Right-click the partition function you want to delete and select Delete.

  4. Nella finestra di dialogo Elimina oggetto verificare che venga selezionata la funzione di partizione corretta, quindi fare clic su OK.In the Delete Object dialog box, ensure that the correct partition function is selected, and then click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per suddividere una singola partizione in due partizioniTo split a single partition into two partitions

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    -- Look for a previous version of the partition function “myRangePF1” and deletes it if it is found.  
    IF EXISTS (SELECT * FROM sys.partition_functions  
        WHERE name = 'myRangePF1')  
        DROP PARTITION FUNCTION myRangePF1;  
    GO  
    -- Create a new partition function called “myRangePF1” that partitions a table into four partitions.  
    CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );  
    GO  
    --Split the partition between boundary_values 100 and 1000  
    --to create two partitions between boundary_values 100 and 500  
    --and between boundary_values 500 and 1000.  
    ALTER PARTITION FUNCTION myRangePF1 ()  
    SPLIT RANGE (500);  
    

Per unire due partizioni in una partizioneTo merge two partitions into one partition

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    -- Look for a previous version of the partition function “myRangePF1” and deletes it if it is found.  
    IF EXISTS (SELECT * FROM sys.partition_functions  
        WHERE name = 'myRangePF1')  
        DROP PARTITION FUNCTION myRangePF1;  
    GO  
    -- Create a new partition function called “myRangePF1” that partitions a table into four partitions.  
    CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );  
    GO  
    --Merge the partitions between boundary_values 1 and 100  
    --and between boundary_values 100 and 1000 to create one partition  
    --between boundary_values 1 and 1000.  
    ALTER PARTITION FUNCTION myRangePF1 ()  
    MERGE RANGE (100);  
    

    Per altre informazioni, vedere ALTER PARTITION FUNCTION (Transact-SQL).For more information, see ALTER PARTITION FUNCTION (Transact-SQL).