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.