Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment réparer "Le schéma de partition '...' n'a pas de groupe de fichiers utilisé ensuite" dans SQL Server

Vous obtiendrez l'erreur 7710 si vous essayez de diviser une partition dans SQL Server, mais que vous n'avez pas spécifié de groupe de fichiers "à utiliser ensuite".

L'erreur entière ressemble à ceci :

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.

MyPartitionScheme est le nom du schéma de partition en question.

Si vous obtenez cette erreur, vous devrez ajouter un groupe de fichiers "prochain utilisé" en utilisant le ALTER PARTITION SCHEME déclaration.

Le problème

Voici un rapide aperçu du problème.

Lorsque j'essaie de diviser une partition :

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

J'obtiens l'erreur suivante :

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.

C'est parce que je n'ai pas spécifié de groupe de fichiers "prochain utilisé" pour MoviesPartitionScheme , qui dans mon cas, est le schéma de partition que j'ai utilisé pour appliquer la MoviesPartitionFunction aux groupes de fichiers à utiliser par les partitions.

Voici comment j'ai créé ma fonction de partition et mon schéma de partition d'origine :

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);

Il a donc actuellement quatre partitions et j'essaie d'en ajouter une cinquième.

La solution

Nous pouvons résoudre le problème ci-dessus en ajoutant un groupe de fichiers "prochain utilisé" pour le schéma de partition.

Nous pouvons utiliser un groupe de fichiers existant ou en créer un nouveau.

Créons-en une nouvelle et essayons à nouveau de scinder la partition :

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);

Résultat :

Commands completed successfully.

Excellent, donc cela a fonctionné, et nous n'obtenons plus l'erreur.