sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo arreglar "El esquema de partición '...' no tiene ningún siguiente grupo de archivos usado" en SQL Server

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.