Para probar esto, el experimento realmente necesita particionar la tabla. Ver http://www.kodyaz.com/articles/how-to-partition-table-non-partitioned-table-sql-server-2008.aspx
La consulta de la función de partición solo le dice lo que dice la función de partición. No dice dónde se almacenan los datos. Puede configurar una función de partición y ejecutarla sin particionar una tabla, como ya se ha demostrado aquí.
Para particionar la tabla, también debe crear grupos de archivos y un esquema de partición que use la función de partición para asignar resultados de función a grupos de archivos. Luego, debe colocar una clave agrupada en la tabla que utilice ese esquema de partición.
Configurar la partición
No soy experto en línea de comandos SQL. Utilicé la interfaz SSMS para configurar grupos de archivos pfg1 (con un archivo pf1) y pfg2 (con un archivo pf2). Luego declaró la función de partición y el esquema:
CREATE PARTITION FUNCTION IDRange1 (int)
AS RANGE LEFT FOR VALUES (10) ;
GO
CREATE PARTITION SCHEME ps_IDRange1
AS PARTITION IDRange1
TO (pfg1, pfg2)
GO
Crear la tabla y el índice agrupado
CREATE TABLE [IDRanges](
[ID] [int] NOT NULL
)
GO
CREATE CLUSTERED INDEX PK_IDRanges
ON dbo.IDRanges(id) ON ps_IDRange1 (ID)
GO
Después de hacer esto, cuando consulta sys.partitions (tengo 2005), ve que la tabla ahora tiene dos particiones en lugar de solo una para la tabla. Esto indica que hemos implementado completamente la partición para esta tabla.
select * from sys.partitions where object_id = object_id('IDRanges')
Partition_id Object_id Index_id Partition_number Hobt_id filas
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 0
72057597780361216 770674389 1 2 72057597780361216 0
Ahora que tenemos dos particiones (con un recuento de filas para cada una), podemos realizar un experimento.
Insertar las filas
INSERT INTO IDRanges ([ID]) VALUES (17)
INSERT INTO IDRanges ([ID]) VALUES (7)
Consulte las particiones sys. para ver qué sucedió.
select * from sys.partitions where object_id = object_id('IDRanges')
Partition_id Object_id Index_id Partition_number Hobt_id filas
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 1
72057597780361216 770674389 1 2 72057597780361216 1
Sí. Una fila en cada partición.
Mueve una fila.
UPDATE IDRanges
SET [ID] = 8 WHERE [ID] = 17
Verifica las particiones
select * from sys.partitions where object_id = object_id('IDRanges')
Partition_id Object_id Index_id Partition_number Hobt_id filas
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 2
72057597780361216 770674389 1 2 72057597780361216 0
La primera partición ahora tiene dos filas en lugar de 1, y la segunda partición tiene cero filas en lugar de dos.
Creo que esto confirma que la fila se movió automáticamente como resultado de modificar la clave agrupada en una tabla particionada.