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.