Compartilhar via


CREATE PARTITION SCHEME (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instâ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 que usa 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 FILESTREAM e grupos de arquivos não FILESTREAM.

ALL
Especifica que todas as partições são mapeadas para o grupo de arquivos fornecido no file_group_name ou para o grupo de arquivos primário se [PRIMARY] é especificado. Se ALL for especificado, somente 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, somente 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 conter o número de partições especificado em partition_function_name, CREATE PARTITION SCHEME falhará com um erro.

Se o partition_function_name gerar menos partições que grupos de arquivos, o primeiro grupo de arquivos não atribuído será marcado como NEXT USED e uma mensagem informativa será exibida, nomeando o grupo de arquivos NEXT USED. Se ALL for especificado, o único file_group_name manterá sua propriedade NEXT USED para esse partition_function_name. O grupo de arquivos NEXT USED receberá uma partição adicional se uma for criada em uma instrução ALTER PARTITION FUNCTION. Para criar grupos de arquivos não atribuídos adicionais para conter novas partições, use ALTER PARTITION SCHEME.

Ao especificar o grupo de arquivos primário em file_group_name [ ,...n], PRIMARY deverá ser delimitado, como em [PRIMARY], porque é uma palavra-chave.

Para Banco de Dados SQL, há suporte somente para PRIMARY. Consulte o exemplo a seguir.

Permissões

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

  • Permissão ALTER ANY DATASPACE. 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 .
  • Permissão CONTROL ou ALTER no banco de dados no qual o esquema de partição está sendo criado.
  • Permissão CONTROL SERVER ou ALTER ANY DATABASE no servidor do banco de dados no qual o esquema de partição está sendo criado.

Exemplos

a. Criando 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 são atribuídas como 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. Criando 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 são atribuídas como 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. Criando 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. Criando 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 e será criado um esquema de partição que lista mais grupos de arquivos do que há 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.

O esquema de partição 'myRangePS4' foi criado com êxito. 'test5fg' está marcado como o próximo grupo de arquivos a ser usado no esquema de partição '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. Criando um esquema de partição somente no 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 é compatível quando realizado 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. Um esquema de partição é então criado, 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] );  

Próximas etapas

Saiba mais sobre particionamento de tabelas e conceitos relacionados nos seguintes artigos: