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, solo 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 ] )
[ ; ]
Argumentos
partition_scheme_name
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
Nombre de la función de partición mediante 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 sola partición no puede contener grupos de archivos FILESTREAM y no FILESTREAM.
ALL
Especifica que todas las particiones se asignan al grupo de archivos proporcionado en file_group_name, o al grupo de archivos principal si se especifica [PRIMARY]
. Si se especifica ALL
, solo se puede especificar un 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 file_group_name. Las particiones se asignan a grupos de archivos, a partir de la partición 1, en el orden en que los grupos de archivos aparecen en [, ...<n>]
. El mismo file_group_name se puede especificar 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
produce un error.
Si partition_function_name genera menos particiones que los grupos de archivos, el primer grupo de archivos sin asignar se marca NEXT USED
y un mensaje de información muestra el nombre del grupo de archivos NEXT USED
. Si se especifica ALL
, el único file_group_name mantiene su propiedad NEXT USED
para este partition_function_name. El grupo de archivos NEXT USED
recibe una partición adicional si se crea una en una instrucción ALTER PARTITION FUNCTION
. Para crear más grupos de archivos sin asignar para contener nuevas particiones, use ALTER PARTITION SCHEME
.
Al especificar el grupo de archivos principal en <file_group_name> [, ...<n>]
, PRIMARY
debe delimitarse, como en [PRIMARY]
, porque es una palabra clave.
Solo se admite PRIMARY
para SQL Database. Vea ejemplo de E.
Permisos
Los permisos siguientes se pueden usar para ejecutar CREATE PARTITION SCHEME
:
ALTER ANY DATASPACE
permiso. 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 .CONTROL
oALTER
permiso en la base de datos en la que se crea el esquema de partición.CONTROL SERVER
oALTER ANY DATABASE
permiso en el servidor de la base de datos en la que se crea 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, use 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 especifique un grupo de archivos NEXT USED
En el ejemplo siguiente se crea la misma función de partición que en los ejemplos anteriores. También crea un esquema de partición que enumera más grupos de archivos que las 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.
E. Creación de un esquema de partición solo en PRIMARY
En Azure SQL Database, no se admite la adición de archivos y grupos de archivos, pero la creación de particiones de tablas solo se admite mediante la creación de particiones en el grupo de archivos de PRIMARY
.
En el ejemplo siguiente se crea una función de partición para crear cuatro particiones en una tabla o en un índice. A continuación, se crea un esquema de partición que especifica que todas las particiones 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]);