Modificare uno schema di partizione

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

È possibile modificare uno schema di partizione in SQL Server, database SQL di Azure e Istanza gestita di SQL di Azure designando un filegroup in modo che contenga la partizione successiva aggiunta a una tabella partizionata usando SQL Server Management Studio (SSMS) o Transact-SQL. 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, in un filegroup possono essere incluse più partizioni. Per altre informazioni sui filegroup e sulle strategie di partizionamento, vedere Filegroup.

Il partizionamento delle tabelle è disponibile anche nei pool SQL dedicati in Azure Synapse Analytics, con alcune differenze di sintassi. Per altre informazioni, vedere Partizionamento di tabelle nel pool SQL dedicato.

Limiti

Tutti i filegroup a cui viene applicata l'istruzione ALTER PARTITION SCHEME devono essere online.

Nota

Database SQL di Azure supporta solo il filegroup PRIMARY.

Autorizzazioni

Per eseguire l'istruzione ALTER PARTITION SCHEME, è possibile 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 è stato creato lo schema di partizione.

Modificare uno schema di partizione con Transact-SQL

Questo esempio usa il database di esempio AdventureWorks.

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui.

    Nota

    Per semplicità, questo codice crea nuovi filegroup, ma non assegna alcun file ad essi. Ciò consente la dimostrazione di come modificare lo schema di partizione, ma non è un esempio completo di configurazione di un oggetto partizionato. Esempi di creazione di indici e tabelle partizionate sono disponibili in Creare tabelle e indici partizionati.

    USE AdventureWorks2022;  
    GO
    -- add five new filegroups to the AdventureWorks2022 database  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test1fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test2fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test3fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test4fg;  
    GO  
    ALTER DATABASE AdventureWorks2022  
    ADD FILEGROUP test5fg;  
    GO 
    
    -- if the "myRangePF1" partition function and the "myRangePS1" partition scheme exist,  
    -- drop them from the AdventureWorks2022 database  
    IF EXISTS (SELECT * FROM sys.partition_functions  
        WHERE name = 'myRangePF1')  
    DROP PARTITION FUNCTION myRangePF1;  
    GO  
    IF EXISTS (SELECT * FROM sys.partition_schemes  
        WHERE name = 'myRangePS1')  
    DROP PARTITION SCHEME myRangePS1;  
    GO  
    
    -- create the new partition function "myRangePF1" with four partition groups  
    CREATE PARTITION FUNCTION myRangePF1 (int)  
    AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );  
    GO  
    
    -- create the new partition scheme "myRangePS1"that will use   
    -- the "myRangePF1" partition function with five file groups.  
    -- The last filegroup, "test5fg," will be kept empty but marked  
    -- as the next used filegroup in the partition scheme.  
    CREATE PARTITION SCHEME myRangePS1  
    AS PARTITION myRangePF1  
    TO (test1fg, test2fg, test3fg, test4fg, test5fg);  
    GO  
    
    --Split "myRangePS1" 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);  
    GO  
    
    -- Allow the "myRangePS1" partition scheme to use the filegroup "test5fg"  
    -- for the partition with boundary_values of 100 and 500  
    ALTER PARTITION SCHEME myRangePS1  
    NEXT USED test5fg;  
    GO  
    

Eliminare uno schema di partizione con SSMS

  1. Connettersi al server di destinazione in Esplora oggetti.

  2. Fare clic sul segno più per espandere il database in cui si desidera eliminare lo schema di partizione.

  3. Fare clic sul segno più per espandere la cartella Archiviazione.

  4. Fare clic sul segno più per espandere la cartella Schemi di partizione.

  5. Fare clic con il pulsante destro del mouse sullo schema di partizione che si vuole eliminare e scegliere Elimina.

  6. Nella finestra di dialogo Elimina oggetto verificare che sia selezionato lo schema di partizione corretto, quindi fare clic su OK.

Passaggi successivi

Per altre informazioni sul partizionamento delle tabelle, vedere questi articoli: