Compartir a través de


CREATE PARTITION SCHEME (Transact-SQL)

Crea un esquema en la base de datos actual que asigna a grupos de archivos las particiones de una tabla o índice con particiones. 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. Antes de crear un esquema de partición es necesario crear una función de partición en una instrucción CREATE PARTITION FUNCTION.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

CREATE PARTITION SCHEME partition_scheme_name
AS PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...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 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, sólo 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 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, sólo 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 éstos 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 especificado 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, sólo 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 [ 1**,**...n], PRIMARY debe estar delimitado, como en [PRIMARY], porque es una palabra clave.

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 dividir una tabla o índice en cuatro particiones. 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 utiliza 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

test1fg

test2fg

test3fg

test4fg

Partición

1

2

3

4

Valores

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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 utiliza 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

test1fg

test1fg

test1fg

test2fg

Partición

1

2

3

4

Valores

col1 <= 1

col1 > 1 AND col1 <= 100

col1 > 100 AND col1 <= 1000

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.

Partition scheme 'myRangePS4' has been created successfully. '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.