CRIAR ESQUEMA DE PARTIÇÃO (Transact-SQL)
Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure
Cria um esquema no banco de dados atual que mapeia as partições de uma tabela ou índice particionado para um ou mais grupos de arquivos. Os valores que mapeiam as linhas de uma tabela ou índice em partições são especificados em uma função de partição. Uma função de partição deve primeiro ser criada em uma instrução
Observação
No Banco de Dados SQL do Azure, apenas grupos de arquivos primários são suportados. Saiba mais sobre grupos de arquivos e estratégias de particionamento em Grupos de arquivos.
Transact-SQL convenções de sintaxe
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 do esquema de partição devem ser exclusivos dentro do banco de dados e estar em conformidade com as regras para 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.
TUDO
Especifica que todas as partições são mapeadas para o grupo de arquivos fornecido no 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 | [ PRIMÁRIO ] [ , ...n ]
Especifica os nomes dos grupos de arquivos para armazenar 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 especificado 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 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
recebe 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 armazenar novas partições, use ALTER PARTITION SCHEME
.
Quando você especifica o grupo de arquivos primário no <file_group_name> [, ...<n>]
, PRIMARY
deve ser delimitado, como no [PRIMARY]
, porque é uma palavra-chave.
Somente PRIMARY
é suportado para o Banco de dados SQL. Ver exemplo E.
Permissões
As seguintes permissões podem ser usadas para executar CREATE PARTITION SCHEME
:
ALTER ANY DATASPACE
permissão. Esse padrão de permissão é para membros da função de servidor fixa sysadmin e as funções de banco de dados fixas db_owner e db_ddladmin.CONTROL
ouALTER
permissão no banco de dados no qual o esquema de partição está sendo criado.CONTROL SERVER
ouALTER ANY DATABASE
permissão no servidor do banco de dados no qual o esquema de partição está sendo criado.
Exemplos
Um. Criar um esquema de partição que mapeie cada partição para um grupo de arquivos diferente
O exemplo a seguir cria uma função de partição para particionar uma tabela ou índice em quatro partições. Em seguida, é criado um esquema de partição que especifica os grupos de arquivos para armazenar cada uma das quatro partições. Este exemplo pressupõe que os grupos de arquivos já existem 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
no col1
de coluna de particionamento seriam atribuídas conforme mostrado na tabela a seguir.
Grupo de arquivos | Partição | Valores |
---|---|---|
test1fg |
1 |
col1
<= 1 |
test2fg |
2 |
col1
>
1 E col1 <= 100 |
test3fg |
3 |
col1
>
100 E col1 <= 1000 |
test4fg |
4 | col1 > 1000 |
B. Criar um esquema de partição que mapeie 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
. Mas se várias partições, mas não todas, 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
no col1
de coluna de particionamento seriam atribuídas conforme mostrado na tabela a seguir.
Grupo de arquivos | Partição | Valores |
---|---|---|
test1fg |
1 |
col1
<= 1 |
test1fg |
2 |
col1
>
1 E col1 <= 100 |
test1fg |
3 |
col1
>
100 E col1 <= 1000 |
test2fg |
4 | col1 > 1000 |
C. Criar um esquema de partição que mapeie 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 um esquema de partição é criado 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 especifique 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 existem 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 pelo particionamento apenas no grupo de arquivos PRIMARY
.
O exemplo a seguir cria uma função de partição para particionar 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]);