ALTER PARTITION FUNCTION (Transact-SQL)

Modifica una función de partición dividiendo o mezclando sus valores de límite. Ejecutando ALTER PARTITION FUNCTION, se puede dividir una partición de cualquier tabla o índice que utilice la función de partición en dos particiones, o bien se pueden mezclar dos particiones en una partición menos.

ms186307.Caution(es-es,SQL.90).gifAdvertencia:
Varias tablas o índices pueden utilizar la misma función de partición. ALTER PARTITION FUNCTION afecta a todas ellas en una única transacción.

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

Sintaxis

ALTER PARTITION FUNCTION partition_function_name()
{ 
    SPLIT RANGE ( boundary_value )
  | MERGE RANGE ( boundary_value ) 
} [ ; ]

Argumentos

  • partition_function_name
    Es el nombre de la función de partición que se va a modificar.
  • SPLIT RANGE ( boundary_value )
    Agrega una partición a la función de partición. El argumento boundary_value determina el intervalo de la nueva partición y debe diferir de los intervalos de límites existentes de la función de partición. Basado en boundary_value, SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005) de Microsoft divide uno de los intervalos existentes en dos. De estos dos, se considera la partición nueva aquél donde reside el nuevo boundary_value.

    ms186307.note(es-es,SQL.90).gifImportante:
    Debe existir un grupo de archivos conectado y estar marcado por el esquema de partición que utiliza la función de partición como NEXT USED para contener la nueva partición. Los grupos de archivos se asignan a particiones de una instrucción CREATE PARTITION SCHEME. Si la instrucción CREATE PARTITION SCHEME asigna más grupos de archivos de los necesarios (se crean menos particiones en la instrucción CREATE PARTITION FUNCTION que grupos de archivos para contenerlos), habrá entonces grupos de archivos sin asignar y el esquema de partición marcará uno de ellos como NEXT USED. Este grupo de archivos contendrá la partición nueva. Si no hay grupos de archivos marcados como NEXT USED por el esquema de partición, debe usar ALTER PARTITION SCHEME para agregar un grupo de archivos o designar uno existente a fin de que contenga la partición nueva. Se puede designar a un grupo de archivos que ya contenga particiones para contener particiones adicionales. Puesto que una función de partición puede participar en más de un esquema de partición, todos los esquemas de partición que utilizan la función de partición a la que esté agregando particiones deben tener un grupo de archivos NEXT USED. De lo contrario, ALTER PARTITION FUNCTION produce un error que muestra el esquema o esquemas de partición a los que les falta un grupo de archivos NEXT USED.
  • MERGE [ RANGE ( boundary_value) ]
    Quita una partición y mezcla cualquier valor que exista en la partición en una de las particiones restantes. RANGE (boundary_value) debe ser un valor de límite existente, en el que se mezclan los valores de la partición quitada. El grupo de archivos que originalmente contenía boundary_value se quita del esquema de partición, a menos que lo utilice una partición restante o que esté marcado con la propiedad NEXT USED. La partición mezclada se encuentra en el grupo de archivos que originalmente no contenía boundary_value. boundary_value es una expresión constante que puede hacer referencia a variables (incluidas variables de tipos definidos por el usuario) o funciones (incluidas funciones definidas por el usuario). No puede hacer referencia a una expresión Transact-SQL. boundary_valuedebe coincidir con el tipo de datos de su columna de partición correspondiente o ser susceptible de convertirse de forma implícita a él, y no se puede truncar durante la conversión implícita de forma que el tamaño y la escala del valor no coincidan con el de su input_parameter_type correspondiente.

Notas

ALTER PARTITION FUNCTION vuelve a crear particiones en cualquier tabla o índice que utilice la función en una única operación atómica. Sin embargo, esta operación se produce sin conexión, y dependiendo del alcance de las reparticiones puede consumir muchos recursos.

ALTER PARTITION FUNCTION se puede utilizar solamente para dividir una partición en dos o mezclar dos particiones en una. Para cambiar el modo en el que se crean particiones en una tabla (por ejemplo, de 10 particiones a 5), puede aplicar cualquiera de las opciones siguientes. Dependiendo de la configuración del sistema, estas opciones pueden tener un consumo de recursos diferente:

  • Cree una nueva tabla con particiones con la función de partición deseada y, a continuación, inserte los datos de la tabla antigua en la tabla nueva mediante la instrucción INSERT INTO...SELECT FROM.

  • Cree un índice agrupado con particiones en un montón.

    [!NOTA] El resultado de quitar un índice agrupado con particiones es un montón con particiones.

  • Quite y vuelva a generar un índice con particiones existente mediante la instrucción CREATE INDEX de Transact-SQL con la cláusula DROP EXISTING = ON.

  • Ejecute una secuencia de instrucciones ALTER PARTITION FUNCTION.

Todos los grupos de archivos que estén afectados por ALTER PARTITION FUNCTION deben estar conectados.

ALTER PARTITION FUNCTION produce un error cuando existe un índice agrupado deshabilitado en cualquiera de las tablas que utilizan la función de partición.

Microsoft SQL Server 2005 no proporciona compatibilidad de réplica para modificar una función de partición. Los cambios en la función de partición de la base de datos de publicaciones se deben aplicar manualmente en la base de datos de suscripciones.

Permisos

Se puede utilizar cualquiera de los siguientes permisos para ejecutar ALTER PARTITION FUNCTION:

  • Permiso ALTER ANY DATASPACE. Este permiso usa como valor determinado miembros de la función fija de servidor sysadmin y de las funciones fijas de base de datos db_owner y db_ddladmin.
  • Permiso CONTROL o ALTER de la base de datos en la que se creó la función de partición.
  • Permiso CONTROL SERVER o ALTER ANY DATABASE del servidor de la base de datos en la que se creó la función de partición.

Ejemplos

A. Dividir una partición de una tabla o índice con particiones en dos particiones

En el ejemplo siguiente se crea una función de partición para dividir una tabla o índice en cuatro particiones. ALTER PARTITION FUNCTION divide una de las particiones en dos para crear un total de cinco particiones.

IF EXISTS (SELECT * FROM sys.partition_functions
    WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Split the partition between boundary_values 100 and 1000
--to create two partitions between boundary_values 100 and 500
--and between boundary_values 500 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
SPLIT RANGE (500);

B. Mezclar dos particiones de una tabla con particiones en una partición

En el ejemplo siguiente se crea la misma función de partición que antes y después se mezclan dos de las particiones en una partición para conseguir un total de tres particiones.

IF EXISTS (SELECT * FROM sys.partition_functions
    WHERE name = 'myRangePF1')
DROP PARTITION FUNCTION myRangePF1;
GO
CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES ( 1, 100, 1000 );
GO
--Merge the partitions between boundary_values 1 and 100
--and between boundary_values 100 and 1000 to create one partition
--between boundary_values 1 and 1000.
ALTER PARTITION FUNCTION myRangePF1 ()
MERGE RANGE (100);

Vea también

Referencia

CREATE PARTITION FUNCTION (Transact-SQL)
DROP PARTITION FUNCTION (Transact-SQL)
CREATE PARTITION SCHEME (Transact-SQL)
ALTER PARTITION SCHEME (Transact-SQL)
DROP PARTITION SCHEME (Transact-SQL)
CREATE INDEX (Transact-SQL)
ALTER INDEX (Transact-SQL)
CREATE TABLE (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.partition_functions (Transact-SQL)
sys.partition_parameters (Transact-SQL)
sys.partition_range_values (Transact-SQL)
sys.partitions (Transact-SQL)
sys.tables (Transact-SQL)
sys.indexes (Transact-SQL)
sys.index_columns (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005