CREATE PARTITION SCHEME (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Crea un esquema en la base de datos actual que asigna a uno o más grupos de archivos las particiones de una tabla o índice con particiones. Los valores que asignan las filas de una tabla o índice en particiones se especifican en una función de partición. Antes de crear un esquema de partición, es necesario crear una función de partición de una instrucción CREATE PARTITION FUNCTION.

Nota

En Azure SQL Database solamente se admiten grupos de archivos principales. Más información sobre grupos de archivos y estrategias de partición en Grupos de archivos.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

partition_scheme_name
Es el nombre del esquema de partición. Los nombres de esquema de partición deben ser únicos en la base de datos y cumplir las reglas de los identificadores.

partition_function_name
Es el nombre de la función de partición que utiliza el esquema de partición. Las particiones creadas por la función de partición se asignan a los grupos de archivos especificados en el esquema de partición. partition_function_name ya debe existir en la base de datos. Una única partición no puede contener grupos de archivos FILESTREAM y no FILESTREAM a la vez.

ALL
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]. Si se especifica ALL, solo se puede especificar un valor de file_group_name.

file_group_name | [ PRIMARY ] [ ,...n]
Especifica los nombres de los grupos de archivos que almacenarán las particiones especificadas por partition_function_name. file_group_name ya debe existir en la base de datos.

Si se especifica [PRIMARY], la partición se almacena en el grupo de archivos principal. Si se especifica ALL, solo se puede especificar un valor de file_group_name. A partir de la partición 1, las particiones se asignan a los grupos de archivos en el orden en que estos aparecen en [ ,...n]. Se puede especificar el mismo valor de file_group_name más de una vez en [ ,...n]. Si n no es suficiente para contener el número de particiones especificadas en partition_function_name, CREATE PARTITION SCHEME generará un 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. Si se especifica ALL, solo file_group_name mantiene su propiedad NEXT USED para este 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. Si desea crear más grupos de archivos sin asignar para almacenar las nuevas particiones, utilice ALTER PARTITION SCHEME.

Al especificar el grupo de archivos principal en file_group_name [ ,...n], PRIMARY debe estar delimitado, como en [PRIMARY], porque es una palabra clave.

Solo se admite PRIMARY para SQL Database. Consulte el ejemplo siguiente.

Permisos

Se pueden utilizar los permisos siguientes para ejecutar CREATE PARTITION SCHEME:

  • Permiso ALTER ANY DATASPACE. 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 .
  • Permiso CONTROL o ALTER en la base de datos en la que se va a crear el esquema de partición.
  • 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.

Ejemplos

A. Crear un esquema de partición que asigne cada partición a un grupo de archivos diferente

En el ejemplo siguiente se crea una función de partición para crear cuatro particiones en una tabla o en un índice. 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. En este ejemplo se asume que los grupos de archivos ya existen en la base de datos.

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.

Grupo de archivos Partición Valores
test1fg 1 col1<= 1
test2fg 2 col1>1 AND col1<= 100
test3fg 3 col1>100 AND col1<= 1000
test4fg 4 col1>1000

B. Crear un esquema de partición que asigne varias particiones al mismo grupo de archivos

Si todas las particiones se asignan al mismo grupo de archivos, utilice la palabra clave ALL. 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.

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.

Grupo de archivos Partición Valores
test1fg 1 col1<= 1
test1fg 2 col1>1 AND col1<= 100
test1fg 3 col1>100 AND col1<= 1000
test2fg 4 col1>1000

C. Crear un esquema de partición que asigne todas las particiones al mismo grupo de archivos

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.

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. Crear un esquema de partición que especifica un grupo de archivos NEXT USED

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.

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.

Se ha creado correctamente el esquema de partición "myRangePS4". "test5fg" tiene la marca de grupo de archivos usado a continuación en el esquema de partición "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.

E. Crear un esquema de partición solo en el grupo de archivos con el valor PRIMARY

En Azure SQL Database, no se permite agregar archivos ni grupos de archivos, pero las tablas con particiones sí que se admiten mediante la creación de particiones únicamente en el grupo de archivos con el valor PRIMARY.

En el ejemplo siguiente se crea una función de partición para crear cuatro particiones en una tabla o en un índice. Después, se crea un esquema de partición que especifica todas las particiones que se crean en el grupo de archivos 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] );  

Pasos siguientes

Más información sobre la partición de tablas y conceptos relacionados en los artículos siguientes: