Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como corrigir “O esquema de partição ‘…’ não tem nenhum próximo grupo de arquivos usado” no SQL Server


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.