CREATE PARTITION SCHEME (Transact-SQL)

Cria um esquema no banco de dados atual que mapeia as partições de uma tabela particionada ou índice para grupos de arquivos. O número e o domínio das partições de uma tabela particionada ou índice são determinados 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 de criar um esquema de partição.

Ícone de vínculo de tópicoConvenções de sintaxe 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 estar em conformidade com as regras para 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. 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] 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 conterão as partições especificadas por partition_function_name. O 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 estã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 este 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 [ 1**,**...n], PRIMARY deverá ser delimitado, como em [PRIMARY], porque é uma palavra-chave.

Permissões

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

  • Permissão ALTER ANY DATASPACE. Esta 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 seriam atribuídas como mostrado na tabela a seguir.

Grupo de arquivos

test1fg

test2fg

test3fg

test4fg

Partição

1

2

3

4

Valores

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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 seriam atribuídas como mostrado na tabela a seguir.

Grupo de arquivos

test1fg

test1fg

test1fg

test2fg

Partição

1

2

3

4

Valores

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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.

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.