Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come risolvere "Lo schema di partizione '...' non ha nessun filegroup utilizzato successivo" in SQL Server

Otterrai l'errore 7710 se provi a dividere una partizione in SQL Server, ma non hai specificato un filegroup "prossimo utilizzato".

L'intero errore è simile a questo:

Msg 7710, Level 16, State 1, Line 1
Warning: The partition scheme 'MyPartitionScheme' does not have any next used filegroup. Partition scheme has not been changed.

Dove MyPartitionScheme è il nome dello schema di partizione in questione.

Se ricevi questo errore, dovrai aggiungere un filegroup "prossimo utilizzato" utilizzando il ALTER PARTITION SCHEME dichiarazione.

Il problema

Ecco un rapido riassunto del problema.

Quando provo a dividere una partizione:

ALTER PARTITION FUNCTION MoviesPartitionFunction()
SPLIT RANGE (500);

Ottengo il seguente errore:

Msg 7710, Level 16, State 1, Line 1
Warning: The partition scheme 'MoviesPartitionScheme' does not have any next used filegroup. Partition scheme has not been changed.

Questo perché non ho specificato un filegroup "prossimo utilizzato" per MoviesPartitionScheme , che nel mio caso è lo schema di partizione che ho usato per applicare la MoviesPartitionFunction ai filegroup che devono essere utilizzati dalle partizioni.

Ecco come ho creato la mia funzione di partizione originale e lo schema di partizione:

CREATE PARTITION FUNCTION MoviesPartitionFunction (int)  
    AS RANGE LEFT FOR VALUES (-1, 100, 10000);

CREATE PARTITION SCHEME MoviesPartitionScheme  
    AS PARTITION MoviesPartitionFunction  
    TO (MoviesFg1, MoviesFg2, MoviesFg3, MoviesFg4);

Quindi attualmente ha quattro partizioni e sto cercando di aggiungerne una quinta.

La soluzione

Possiamo risolvere il problema di cui sopra aggiungendo un filegroup "prossimo utilizzato" per lo schema di partizione.

Possiamo usare un filegroup esistente o crearne uno nuovo.

Creiamone uno nuovo e proviamo a dividere di nuovo la partizione:

ALTER DATABASE Test ADD FILEGROUP MoviesFg5;

ALTER DATABASE Test   
ADD FILE   
(  
    NAME = MoviesFg5dat,  
    FILENAME = '/var/opt/mssql/data/MoviesFg5dat.ndf',  
    SIZE = 5MB,  
    MAXSIZE = 100MB,  
    FILEGROWTH = 5MB  
)  
TO FILEGROUP MoviesFg5;

ALTER PARTITION SCHEME MoviesPartitionScheme  
NEXT USED MoviesFg5;

ALTER PARTITION FUNCTION MoviesPartitionFunction()
SPLIT RANGE (500);

Risultato:

Commands completed successfully.

Eccellente, quindi ha funzionato e non riceviamo più l'errore.