CREATE PARTITION SCHEME (Transact-SQL)CREATE PARTITION SCHEME (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure SQL nãoAzure Synapse Analytics (SQL DW) nãoData Warehouse Paralelo APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cria um esquema no banco de dados atual que mapeia as partições de uma tabela particionada ou índice para grupos de arquivos.Creates a scheme in the current database that maps the partitions of a partitioned table or index to filegroups. 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.The number and domain of the partitions of a partitioned table or index are determined in a partition function. 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.A partition function must first be created in a CREATE PARTITION FUNCTION statement before creating a partition scheme.

Observação

No Banco de Dados SQL do Azure, há suporte apenas para grupos de arquivos primários.In Azure SQL Database only primary filegroups are supported.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

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

ArgumentosArguments

partition_scheme_namepartition_scheme_name
É o nome do esquema de partição.Is the name of the partition scheme. Os nomes de esquemas de partição devem ser exclusivos no banco de dados e obedecer às regras de identificadores.Partition scheme names must be unique within the database and comply with the rules for identifiers.

partition_function_namepartition_function_name
É o nome da função de partição que usa o esquema de partição.Is the name of the partition function using the partition scheme. As partições criadas pela função de partição são mapeadas para os grupos de arquivos especificados no esquema de partição.Partitions created by the partition function are mapped to the filegroups specified in the partition scheme. partition_function_name já deve existir no banco de dados.partition_function_name must already exist in the database. Uma única partição não pode conter FILESTREAM e grupos de arquivos não FILESTREAM.A single partition cannot contain both FILESTREAM and non-FILESTREAM filegroups.

ALLALL
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.Specifies that all partitions map to the filegroup provided in file_group_name, or to the primary filegroup if [ PRIMARY ] is specified. Se ALL for especificado, somente um file_group_name poderá ser especificado.If ALL is specified, only one file_group_name can be specified.

file_group_name | [ PRIMARY ] [ , ...n]file_group_name | [ PRIMARY ] [ ,...n]
Especifica os nomes dos grupos de arquivos que contém as partições especificadas por partition_function_name.Specifies the names of the filegroups to hold the partitions specified by partition_function_name. file_group_name já deve existir no banco de dados.file_group_name must already exist in the database.

Se [ PRIMARY ] for especificado, a partição será armazenada no grupo de arquivos primário.If [ PRIMARY ] is specified, the partition is stored on the primary filegroup. Se ALL for especificado, somente um file_group_name poderá ser especificado.If ALL is specified, only one file_group_name can be specified. 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].Partitions are assigned to filegroups, starting with partition 1, in the order in which the filegroups are listed in [,...n]. O mesmo file_group_name pode ser especificado mais de uma vez em [ , ...n].The same file_group_name can be specified more than one time in [,...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.If n is not sufficient to hold the number of partitions specified in partition_function_name, CREATE PARTITION SCHEME fails with an error.

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.If partition_function_name generates less partitions than filegroups, the first unassigned filegroup is marked NEXT USED, and an information message displays naming the NEXT USED filegroup. Se ALL for especificado, o único file_group_name manterá sua propriedade NEXT USED para esse partition_function_name.If ALL is specified, the sole file_group_name maintains its NEXT USED property for this 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.The NEXT USED filegroup will receive an additional partition if one is created in an ALTER PARTITION FUNCTION statement. Para criar grupos de arquivos não atribuídos adicionais para conter novas partições, use ALTER PARTITION SCHEME.To create additional unassigned filegroups to hold new partitions, 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.When you specify the primary filegroup in file_group_name [ 1 ,...n], PRIMARY must be delimited, as in [ PRIMARY ], because it is a keyword.

Para Banco de Dados SQLSQL Database, há suporte somente para PRIMARY.Only PRIMARY is supported for Banco de Dados SQLSQL Database. Veja o exemplo E abaixo.See example E below.

PermissõesPermissions

As seguintes permissões podem ser usadas para executar CRETE PARTITION SCHEME:The following permissions can be used to execute CREATE PARTITION SCHEME:

  • Permissão ALTER ANY DATASPACE.ALTER ANY DATASPACE permission. 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 .This permission defaults to members of the sysadmin fixed server role and the db_owner and db_ddladmin fixed database roles.

  • Permissão CONTROL ou ALTER no banco de dados no qual o esquema de partição está sendo criado.CONTROL or ALTER permission on the database in which the partition scheme is being created.

  • Permissão CONTROL SERVER ou ALTER ANY DATABASE no servidor do banco de dados no qual o esquema de partição está sendo criado.CONTROL SERVER or ALTER ANY DATABASE permission on the server of the database in which the partition scheme is being created.

ExemplosExamples

A.A. Criando um esquema de partição que mapeia cada partição para um grupo de arquivos diferenteCreating a partition scheme that maps each partition to a different filegroup

O exemplo a seguir cria uma função de partição para dividir uma tabela ou índice em quatro partições.The following example creates a partition function to partition a table or index into four partitions. Então, será criado um esquema de partição que especifica os grupos de arquivos que conterão cada uma das quatro partições.A partition scheme is then created that specifies the filegroups to hold each one of the four partitions. Este exemplo supõe que os grupos de arquivos já existam no banco de dados.This example assumes the filegroups already exist in the database.

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.The partitions of a table that uses partition function myRangePF1 on partitioning column col1 would be assigned as shown in the following table.

Grupo de arquivosFilegroup test1fg test2fg test3fg test4fg
PartiçãoPartition 11 22 33 44
ValoresValues col1 <= 1col1 <= 1 col1 > 1 AND col1 <= 100col1 > 1 AND col1 <= 100 col1 > 100 AND col1 <= 1000col1 > 100 AND col1 <= 1000 col1 > 1000col1 > 1000

B.B. Criando um esquema de partição que mapeia várias partições para o mesmo grupo de arquivosCreating a partition scheme that maps multiple partitions to the same filegroup

Se todas as partições forem mapeadas para o mesmo grupo de arquivos, use a palavra-chave ALL.If all the partitions map to the same filegroup, use the ALL keyword. 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.But if multiple, but not all, partitions are mapped to the same filegroup, the filegroup name must be repeated, as shown in the following example.

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.The partitions of a table that uses partition function myRangePF2 on partitioning column col1 would be assigned as shown in the following table.

Grupo de arquivosFilegroup test1fg test1fg test1fg test2fg
PartiçãoPartition 11 22 33 44
ValoresValues col1 <= 1col1 <= 1 col1 > 1 AND col1 <= 100col1 > 1 AND col1 <= 100 col1 > 100 AND col1 <= 1000col1 > 100 AND col1 <= 1000 col1 > 1000col1 > 1000

C.C. Criando um esquema de partição que mapeia todas as partições para o mesmo grupo de arquivosCreating a partition scheme that maps all partitions to the same filegroup

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.The following example creates the same partition function as in the previous examples, and a partition scheme is created that maps all partitions to the same filegroup.

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.D. Criando um esquema de partição que especifica um grupo de arquivos 'NEXT USED'Creating a partition scheme that specifies a 'NEXT USED' filegroup

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.The following example creates the same partition function as in the previous examples, and a partition scheme is created that lists more filegroups than there are partitions created by the associated partition function.

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.Executing the statement returns the following message.

O esquema de partição 'myRangePS4' foi criado com êxito.Partition scheme 'myRangePS4' has been created successfully. 'test5fg' está marcado como o próximo grupo de arquivos a ser usado no esquema de partição 'myRangePS4'.'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.If partition function myRangePF4 is changed to add a partition, filegroup test5fg receives the newly created partition.

E.E. Criando um esquema de partição apenas em PRIMARY – há suporte para PRIMARY apenas no Banco de Dados SQLSQL DatabaseCreating a partition schema only on PRIMARY - only PRIMARY is supported for Banco de Dados SQLSQL Database

O exemplo a seguir cria uma função de partição para dividir uma tabela ou índice em quatro partições.The following example creates a partition function to partition a table or index into four partitions. Um esquema de partição é então criado, que especifica que todas as partições são criadas no grupo de arquivos PRIMARY.A partition scheme is then created that specifies that all partitions are created in the PRIMARY filegroup.

CREATE PARTITION FUNCTION myRangePF1 (int)  
AS RANGE LEFT FOR VALUES (1, 100, 1000);  
GO  
CREATE PARTITION SCHEME myRangePS1  
AS PARTITION myRangePF1  
ALL TO ( [PRIMARY] );  

Consulte TambémSee Also

CREATE PARTITION FUNCTION (Transact-SQL) CREATE PARTITION FUNCTION (Transact-SQL)
ALTER PARTITION SCHEME (Transact-SQL) ALTER PARTITION SCHEME (Transact-SQL)
DROP PARTITION SCHEME (Transact-SQL) DROP PARTITION SCHEME (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Criar tabelas e índices particionados Create Partitioned Tables and Indexes
sys.partition_schemes (Transact-SQL) sys.partition_schemes (Transact-SQL)
sys.data_spaces (Transact-SQL) sys.data_spaces (Transact-SQL)
sys.destination_data_spaces (Transact-SQL) sys.destination_data_spaces (Transact-SQL)
sys.partitions (Transact-SQL) sys.partitions (Transact-SQL)
sys.tables (Transact-SQL) sys.tables (Transact-SQL)
sys.indexes (Transact-SQL) sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)sys.index_columns (Transact-SQL)