Você receberá o erro 7710 se tentar dividir uma partição no SQL Server, mas não especificou um grupo de arquivos “próximo usado”.
Todo o erro se parece com isso:
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.
Onde
MyPartitionScheme
é o nome do esquema de partição em questão. Se você receber esse erro, precisará adicionar um grupo de arquivos “próximo usado” usando o
ALTER PARTITION SCHEME
demonstração. O problema
Aqui está um resumo rápido sobre o problema.
Quando tento dividir uma partição:
ALTER PARTITION FUNCTION MoviesPartitionFunction()
SPLIT RANGE (500);
Eu obtenho o seguinte erro:
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.
Isso ocorre porque não especifiquei um grupo de arquivos “próximo usado” para
MoviesPartitionScheme
, que no meu caso, é o esquema de partição que usei para aplicar o MoviesPartitionFunction
aos grupos de arquivos a serem usados pelas partições. Aqui está como eu criei minha função de partição original e esquema de partição:
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);
Portanto, atualmente tem quatro partições e estou tentando adicionar uma quinta.
A solução
Podemos resolver o problema acima adicionando um grupo de arquivos “próximo usado” para o esquema de partição.
Podemos usar um grupo de arquivos existente ou criar um novo.
Vamos criar um novo e tentar dividir a partição novamente:
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, então funcionou e não recebemos mais o erro.