Obtendrá el error 7710 si intenta dividir una partición en SQL Server, pero no ha especificado un grupo de archivos "próximo usado".
Todo el error se parece a esto:
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.
Donde MyPartitionScheme
es el nombre del esquema de partición en cuestión.
Si recibe este error, deberá agregar un grupo de archivos "próximo usado" usando ALTER PARTITION SCHEME
declaración.
El problema
Aquí hay un resumen rápido del problema.
Cuando trato de dividir una partición:
ALTER PARTITION FUNCTION MoviesPartitionFunction()
SPLIT RANGE (500);
Recibo el siguiente error:
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.
Esto se debe a que no he especificado un grupo de archivos "próximo usado" para MoviesPartitionScheme
, que en mi caso, es el esquema de partición que utilicé para aplicar la MoviesPartitionFunction
a los grupos de archivos que utilizarán las particiones.
Así es como creé mi función de partición original y el esquema de partición:
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);
Actualmente tiene cuatro particiones y estoy tratando de agregar una quinta.
La solución
Podemos resolver el problema anterior agregando un grupo de archivos "siguiente usado" para el esquema de partición.
Podemos usar un grupo de archivos existente o crear uno nuevo.
Creemos uno nuevo e intentemos dividir la partición nuevamente:
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);
Resultado:
Commands completed successfully.
Excelente, funcionó y ya no aparece el error.