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

SE APLICA A: síSQL Server síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Crea un esquema en la base de datos actual que asigna a grupos de archivos las particiones de una tabla o índice con particiones.Creates a scheme in the current database that maps the partitions of a partitioned table or index to filegroups. El número y el dominio de las particiones de una tabla o índice con particiones se determinan en una función de partición.The number and domain of the partitions of a partitioned table or index are determined in a partition function. Antes de crear un esquema de partición, es necesario crear una función de partición de una instrucción CREATE PARTITION FUNCTION.A partition function must first be created in a CREATE PARTITION FUNCTION statement before creating a partition scheme.

Nota

En Azure SQL Database solamente se admiten grupos de archivos principales.In Azure SQL Database only primary filegroups are supported.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

partition_scheme_namepartition_scheme_name
Es el nombre del esquema de partición.Is the name of the partition scheme. Los nombres de esquema de partición deben ser únicos en la base de datos y cumplir las reglas de los identificadores.Partition scheme names must be unique within the database and comply with the rules for identifiers.

partition_function_namepartition_function_name
Es el nombre de la función de partición que utiliza el esquema de partición.Is the name of the partition function using the partition scheme. Las particiones creadas por la función de partición se asignan a los grupos de archivos especificados en el esquema de partición.Partitions created by the partition function are mapped to the filegroups specified in the partition scheme. partition_function_name ya debe existir en la base de datos.partition_function_name must already exist in the database. Una única partición no puede contener grupos de archivos FILESTREAM y no FILESTREAM a la vez.A single partition cannot contain both FILESTREAM and non-FILESTREAM filegroups.

ALLALL
Especifica que todas las particiones se asignan al grupo de archivos suministrado en file_group_name o al grupo de archivos principal si se especifica [ PRIMARY ] .Specifies that all partitions map to the filegroup provided in file_group_name, or to the primary filegroup if [ PRIMARY ] is specified. Si se especifica ALL, solo se puede especificar un valor de file_group_name.If ALL is specified, only one file_group_name can be specified.

file_group_name | [ PRIMARY ] [ , ...n]file_group_name | [ PRIMARY ] [ ,...n]
Especifica los nombres de los grupos de archivos que almacenarán las particiones especificadas por partition_function_name.Specifies the names of the filegroups to hold the partitions specified by partition_function_name. file_group_name ya debe existir en la base de datos.file_group_name must already exist in the database.

Si se especifica [ PRIMARY ] , la partición se almacena en el grupo de archivos principal.If [ PRIMARY ] is specified, the partition is stored on the primary filegroup. Si se especifica ALL, solo se puede especificar un valor de file_group_name.If ALL is specified, only one file_group_name can be specified. A partir de la partición 1, las particiones se asignan a los grupos de archivos en el orden en que éstos aparecen en [ , ...n].Partitions are assigned to filegroups, starting with partition 1, in the order in which the filegroups are listed in [,...n]. Se puede especificar el mismo valor de file_group_name más de una vez en [ , ...n].The same file_group_name can be specified more than one time in [,...n]. Si n no es suficiente para contener el número de particiones especificadas en partition_function_name, CREATE PARTITION SCHEME generará un error.If n is not sufficient to hold the number of partitions specified in partition_function_name, CREATE PARTITION SCHEME fails with an error.

Si partition_function_name genera menos particiones que grupos de archivos, el primer grupo de archivos sin asignar se marca como NEXT USED y se muestra un mensaje informativo donde se indica el grupo de archivos 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. Si se especifica ALL, solo file_group_name mantiene su propiedad NEXT USED para este partition_function_name.If ALL is specified, the sole file_group_name maintains its NEXT USED property for this partition_function_name. El grupo de archivos NEXT USED recibirá una partición adicional si se crea una en una instrucción ALTER PARTITION FUNCTION.The NEXT USED filegroup will receive an additional partition if one is created in an ALTER PARTITION FUNCTION statement. Si desea crear más grupos de archivos sin asignar para almacenar las nuevas particiones, utilice ALTER PARTITION SCHEME.To create additional unassigned filegroups to hold new partitions, use ALTER PARTITION SCHEME.

Al especificar el grupo de archivos principal en file_group_name [ 1 , ...n], PRIMARY debe estar delimitado, como en [ PRIMARY ] , porque es una palabra clave.When you specify the primary filegroup in file_group_name [ 1 ,...n], PRIMARY must be delimited, as in [ PRIMARY ], because it is a keyword.

Solo se admite PRIMARY para SQL DatabaseSQL Database.Only PRIMARY is supported for SQL DatabaseSQL Database. Vea el ejemplo E de abajo.See example E below.

PermisosPermissions

Se pueden utilizar los permisos siguientes para ejecutar CREATE PARTITION SCHEME:The following permissions can be used to execute CREATE PARTITION SCHEME:

  • Permiso ALTER ANY DATASPACE.ALTER ANY DATASPACE permission. De forma predeterminada, este permiso corresponde a los miembros del rol fijo de servidor sysadmin y a los roles fijos de base de datos db_owner y db_ddladmin .This permission defaults to members of the sysadmin fixed server role and the db_owner and db_ddladmin fixed database roles.

  • Permiso CONTROL o ALTER en la base de datos en la que se va a crear el esquema de partición.CONTROL or ALTER permission on the database in which the partition scheme is being created.

  • Permiso CONTROL SERVER o ALTER ANY DATABASE en el servidor de la base de datos en la que se va a crear el esquema de partición.CONTROL SERVER or ALTER ANY DATABASE permission on the server of the database in which the partition scheme is being created.

EjemplosExamples

A.A. Crear un esquema de partición que asigne cada partición a un grupo de archivos diferenteCreating a partition scheme that maps each partition to a different filegroup

En el ejemplo siguiente se crea una función de partición para crear cuatro particiones en una tabla o en un índice.The following example creates a partition function to partition a table or index into four partitions. Después, se crea un esquema de partición que especifica los grupos de archivos que van a contener cada una de las cuatro particiones.A partition scheme is then created that specifies the filegroups to hold each one of the four partitions. En este ejemplo se asume que los grupos de archivos ya existen en la base de datos.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);  

Las particiones de una tabla que usa la función de partición myRangePF1 en la columna de partición col1 se asignarían como se muestra en la tabla siguiente.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 archivosFilegroup test1fg test2fg test3fg test4fg
ParticiónPartition 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. Crear un esquema de partición que asigne varias particiones al mismo grupo de archivosCreating a partition scheme that maps multiple partitions to the same filegroup

Si todas las particiones se asignan al mismo grupo de archivos, utilice la palabra clave ALL.If all the partitions map to the same filegroup, use the ALL keyword. Sin embargo, si se asignan varias particiones (no todas) al mismo grupo de archivos, el nombre del grupo de archivos debe repetirse, tal como se muestra en el ejemplo siguiente.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 );  

Las particiones de una tabla que usa la función de partición myRangePF2 en la columna de partición col1 se asignarían como se muestra en la tabla siguiente.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 archivosFilegroup test1fg test1fg test1fg test2fg
ParticiónPartition 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. Crear un esquema de partición que asigne todas las particiones al mismo grupo de archivosCreating a partition scheme that maps all partitions to the same filegroup

En el ejemplo siguiente se crea la misma función de partición que en los ejemplos anteriores y se crea un esquema de partición que asigna todas las particiones al mismo grupo de archivos.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. Crear un esquema de partición que especifica un grupo de archivos NEXT USEDCreating a partition scheme that specifies a 'NEXT USED' filegroup

En el ejemplo siguiente se crea la misma función de partición que en los ejemplos anteriores y se crea un esquema de partición que especifica un número de grupos de archivos superior al número de particiones creadas por la función de partición asociada.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)  

Al ejecutar la instrucción se devuelve el mensaje siguiente.Executing the statement returns the following message.

Se ha creado correctamente el esquema de partición "myRangePS4".Partition scheme 'myRangePS4' has been created successfully. "test5fg" tiene la marca de grupo de archivos usado a continuación en el esquema de partición "myRangePS4".'test5fg' is marked as the next used filegroup in partition scheme 'myRangePS4'.

Si la función de partición myRangePF4 se cambia para agregar una partición, el grupo de archivos test5fg recibe la partición que acaba de crearse.If partition function myRangePF4 is changed to add a partition, filegroup test5fg receives the newly created partition.

E.E. Crear un esquema de partición solo en PRIMARY (SQL DatabaseSQL Database solo admite PRIMARY)Creating a partition schema only on PRIMARY - only PRIMARY is supported for SQL DatabaseSQL Database

En el ejemplo siguiente se crea una función de partición para crear cuatro particiones en una tabla o en un índice.The following example creates a partition function to partition a table or index into four partitions. Después, se crea un esquema de partición que especifica todas las particiones que se crean en el grupo de archivos 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 tambiénSee 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)
Crear tablas e índices con particiones 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)