Mover clave principal al grupo de archivos (SQL Server 2012)

14

¿Cómo puedo mover una clave primaria en clúster a un nuevo grupo de archivos? Ya he encontrado un posible "algoritmo" pero es terriblemente ineficiente:

  1. Descarte indexado no agrupado (requiere que se recurran y reconstruyan)
  2. Descartar índice agrupado (requiere que se recurra a toda la tabla)
  3. Crear nueva restricción de clave primaria (operación de clasificación enorme)
  4. Crear todos los índices no agrupados (se requiere ordenar y escribir)

¿Hay alguna forma más eficiente? Esto es terriblemente ineficiente y llevará mucho tiempo ya que la mesa tiene un tamaño de 50 GB en un servidor débil.

¿No hay una manera de omitir todo esto y simplemente reconstruir un nuevo grupo de archivos? Eso no requeriría ninguna clasificación de datos.

usr
fuente

Respuestas:

24
CREATE UNIQUE CLUSTERED INDEX Your_PK_Name
    ON YourTable(YourColumnList)
WITH (DROP_EXISTING =  ON )
ON [YourOtherFileGroup]

Esto preserva la propiedad PK lógica a pesar de que no se menciona en la sintaxis.

Martin Smith
fuente