Compartilhar via


CREATE PARTITION SCHEME (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Cria um esquema no banco de dados atual que mapeia as partições de uma tabela particionada ou índice para um ou mais grupos de arquivos. Os valores que mapeiam as linhas de uma tabela ou índice para partições são especificados em uma função de partição. Uma função de partição deve primeiramente ser criada em uma instrução CREATE PARTITION FUNCTION antes da criação de um esquema de partição.

Observação

No Banco de Dados SQL do Azure, há suporte apenas para grupos de arquivos primários. Saiba mais sobre grupos de arquivos e estratégias de particionamento em Grupos de Arquivos.

Convenções de sintaxe de Transact-SQL

Sintaxe

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ , ...n ] )
[ ; ]

Argumentos

partition_scheme_name

O nome do esquema de partição. Os nomes de esquemas de partição devem ser exclusivos no banco de dados e obedecer às regras de identificadores.

partition_function_name

O nome da função de partição usando o esquema de partição. As partições criadas pela função de partição são mapeadas para os grupos de arquivos especificados no esquema de partição. partition_function_name já deve existir no banco de dados. Uma única partição não pode conter grupos de arquivos FILESTREAM e não FILESTREAM.

ALL

Especifica que todas as partições são mapeadas para o grupo de arquivos fornecido em file_group_nameou para o grupo de arquivos primário se [PRIMARY] for especificado. Se ALL for especificado, apenas um file_group_name poderá ser especificado.

file_group_name | [ PRIMARY ] [ , ...n ]

Especifica os nomes dos grupos de arquivos que contém as partições especificadas por partition_function_name. file_group_name já deve existir no banco de dados.

Se [PRIMARY] for especificado, a partição será armazenada no grupo de arquivos primário. Se ALL for especificado, apenas um file_group_name poderá ser especificado. As partições são atribuídas a grupos de arquivos, começando com a partição 1, na ordem em que os grupos de arquivos são listados em [, ...<n>]. O mesmo file_group_name pode ser especificado mais de uma vez em [, ...<n>]. Se n não for suficiente para manter o número de partições especificadas em partition_function_name, CREATE PARTITION SCHEME falhará com um erro.

Se partition_function_name gerar menos partições do que grupos de arquivos, o primeiro grupo de arquivos não atribuído será marcado como NEXT USEDe uma mensagem de informação exibirá a nomenclatura do grupo de arquivos NEXT USED. Se ALL for especificado, o único file_group_name manterá sua propriedade NEXT USED para este partition_function_name. O grupo de arquivos NEXT USED receberá uma partição extra se uma for criada em uma instrução ALTER PARTITION FUNCTION. Para criar mais grupos de arquivos não atribuídos para manter novas partições, use ALTER PARTITION SCHEME.

Quando você especifica o grupo de arquivos primário em <file_group_name> [, ...<n>], PRIMARY deve ser delimitado, como em [PRIMARY], porque é uma palavra-chave.

Somente PRIMARY tem suporte para o Banco de Dados SQL. Consulte exemplo E.

Permissões

As seguintes permissões podem ser usadas para executar CREATE PARTITION SCHEME:

  • ALTER ANY DATASPACE permissão. Essa permissão tem como padrão os membros da função de servidor fixa sysadmin e das funções de banco de dados fixas db_owner e db_ddladmin .

  • CONTROL ou ALTER permissão no banco de dados no qual o esquema de partição está sendo criado.

  • CONTROL SERVER ou ALTER ANY DATABASE permissão no servidor do banco de dados no qual o esquema de partição está sendo criado.

Exemplos

a. Criar um esquema de partição que mapeia cada partição para um grupo de arquivos diferente

O exemplo a seguir cria uma função de partição para dividir uma tabela ou índice em quatro partições. Então, será criado um esquema de partição que especifica os grupos de arquivos que conterão cada uma das quatro partições. Este exemplo supõe que os grupos de arquivos já existam no banco de dados.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg);

As partições de uma tabela que usa a função de partição myRangePF1 na coluna de particionamento col1 seriam atribuídas, conforme mostrado na tabela a seguir.

Grupo de arquivos Partition Valores
test1fg 1 col1 <= 1
test2fg 2 col1 > 1 AND col1<= 100
test3fg 3 col1 > 100 AND col1<= 1000
test4fg 4 col1 > 1000

B. Criar um esquema de partição que mapeia várias partições para o mesmo grupo de arquivos

Se todas as partições forem mapeadas para o mesmo grupo de arquivos, use a palavra-chave ALL. Porém, se várias, mas nem todas as partições forem mapeadas para o mesmo grupo de arquivos, o nome do grupo de arquivos deverá ser repetido, como mostrado no exemplo a seguir.

CREATE PARTITION FUNCTION myRangePF2(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS2
AS PARTITION myRangePF2
TO (test1fg, test1fg, test1fg, test2fg);

As partições de uma tabela que usa a função de partição myRangePF2 na coluna de particionamento col1 seriam atribuídas, conforme mostrado na tabela a seguir.

Grupo de arquivos Partition Valores
test1fg 1 col1 <= 1
test1fg 2 col1 > 1 AND col1<= 100
test1fg 3 col1 > 100 AND col1<= 1000
test2fg 4 col1 > 1000

C. Criar um esquema de partição que mapeia todas as partições para o mesmo grupo de arquivos

O exemplo a seguir cria a mesma função de partição que nos exemplos anteriores e será criado um esquema de partição que mapeia todas as partições para o mesmo grupo de arquivos.

CREATE PARTITION FUNCTION myRangePF3(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS3
AS PARTITION myRangePF3
ALL TO (test1fg);

D. Criar um esquema de partição que especifica um grupo de arquivos NEXT USED

O exemplo a seguir cria a mesma função de partição que nos exemplos anteriores. Ele também cria um esquema de partição que lista mais grupos de arquivos do que partições criadas pela função de partição associada.

CREATE PARTITION FUNCTION myRangePF4(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS4
AS PARTITION myRangePF4
TO (test1fg, test2fg, test3fg, test4fg, test5fg);

A execução da instrução retorna a seguinte mensagem.

Partition scheme 'myRangePS4' has been created successfully. 'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Se a função de partição myRangePF4 for alterada para adicionar uma partição, o grupo de arquivos test5fg receberá a partição recém-criada.

E. Criar um esquema de partição somente em PRIMARY

No Banco de Dados SQL do Azure, não há suporte para a adição de arquivos e grupos de arquivos, mas o particionamento de tabela é suportado particionando somente no grupo de arquivos PRIMARY.

O exemplo a seguir cria uma função de partição para dividir uma tabela ou índice em quatro partições. Em seguida, é criado um esquema de partição que especifica que todas as partições são criadas no grupo de arquivos PRIMARY.

CREATE PARTITION FUNCTION myRangePF1(INT)
AS RANGE LEFT FOR VALUES (1, 100, 1000);
GO

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ([PRIMARY]);