Otrzymasz błąd 7710, jeśli spróbujesz podzielić partycję w SQL Server, ale nie określiłeś „następnej używanej” grupy plików.
Cały błąd wygląda mniej więcej tak:
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.
Gdzie MyPartitionScheme
to nazwa danego schematu partycji.
Jeśli pojawi się ten błąd, musisz dodać "następną używaną" grupę plików przy użyciu ALTER PARTITION SCHEME
oświadczenie.
Problem
Oto krótki opis problemu.
Kiedy próbuję podzielić partycję:
ALTER PARTITION FUNCTION MoviesPartitionFunction()
SPLIT RANGE (500);
Otrzymuję następujący błąd:
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.
Dzieje się tak, ponieważ nie określiłem grupy plików „następna używana” dla MoviesPartitionScheme
, który w moim przypadku jest schematem partycji, którego użyłem do zastosowania funkcji MoviesPartitionFunction
do grup plików, które mają być używane przez partycje.
Oto jak stworzyłem moją oryginalną funkcję partycji i schemat partycji:
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);
Więc obecnie ma cztery partycje i próbuję dodać piątą.
Rozwiązanie
Możemy rozwiązać powyższy problem, dodając grupę plików „następna używana” dla schematu partycji.
Możemy użyć istniejącej grupy plików lub stworzyć nową.
Utwórzmy nową i spróbujmy ponownie podzielić partycję:
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);
Wynik:
Commands completed successfully.
Świetnie, więc zadziałało i nie pojawia się już błąd.