sql >> Databasteknik >  >> RDS >> Sqlserver

Så här fixar du "Partitionsschemat '...' har ingen nästa använda filgrupp" i SQL Server

Du kommer att få fel 7710 om du försöker dela en partition i SQL Server, men du inte har angett en "nästa använd" filgrupp.

Hela felet ser ut ungefär så här:

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.

Där MyPartitionScheme är namnet på partitionsschemat i fråga.

Om du får det här felet måste du lägga till en "nästa använd" filgrupp med ALTER PARTITION SCHEME uttalande.

Problemet

Här är en snabb genomgång av problemet.

När jag försöker dela en partition:

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

Jag får följande felmeddelande:

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.

Detta beror på att jag inte har angett en "nästa använd" filgrupp för MoviesPartitionScheme , vilket i mitt fall är partitionsschemat som jag använde för att tillämpa MoviesPartitionFunction till filgrupperna som ska användas av partitionerna.

Så här skapade jag min ursprungliga partitionsfunktion och partitionsschema:

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

Så den har för närvarande fyra partitioner och jag försöker lägga till en femte.

Lösningen

Vi kan lösa ovanstående problem genom att lägga till en "nästa använd" filgrupp för partitionsschemat.

Vi kan använda en befintlig filgrupp eller skapa en ny.

Låt oss skapa en ny och försöka dela upp partitionen igen:

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

Resultat:

Commands completed successfully.

Utmärkt, så det fungerade, och vi får inte längre felet.


  1. snedstreck före varje offertproblem

  2. Hur man formaterar SQLite-frågeresultat i TCL-läge

  3. Felsökning av långvariga frågor i MS SQL Server

  4. Aktivera SQL Server Agent via SSMS