2009-04-03 12 views

Respuesta

25

Algo como esto debería ayudar:

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields) 
    WITH (DROP_EXISTING = ON) ON [NewFilegroup] 
+0

I Creo que esto funcionó. Cuando revisé la tabla-> propiedades-> Almacenamiento, se muestra el 'Grupo de archivos' como mi nuevo grupo de archivos (desde arriba) pero el grupo de archivos de texto == PRIMARIO? ¿es correcto? o debería ser también por un grupo secundario. oup (ej. NewFilegroup). ? –

+3

Esa es una historia diferente: puede especificar un grupo de archivos para los campos Texto/NText al crear la tabla, pero Books Online dice: "El almacenamiento de cualquier columna de gran valor especificada en CREATE TABLE no puede modificarse posteriormente" :-( –

+0

Correcto, no puede cambiar el grupo de archivos para datos TEXT/NTEXT después de que se haya creado la tabla. Debería mover los datos a una nueva tabla utilizando los grupos de archivos correctos, luego cambiar el nombre de esa tabla al nombre de las tablas antiguas para cambiar el grupo de archivos TEXT/NTEXT. – mrdenny

7

Hay dos formas; uno de SSMS y el otro usando TSQL.

desde SQL Server 2008 Libros en pantalla:

Para mover un índice existente a un grupo de archivos o partición diferente esquema de

  • En el Explorador de objetos, conéctese a una instancia del SQL Base de datos del servidor Motor y luego expanda esa instancia.

  • Expanda Bases de datos, expanda la base de datos que contiene la tabla con el índice específico, y luego expanda Tablas.

  • Expanda la tabla a la que pertenece el índice y luego expanda Índices.

  • Haga clic con el botón derecho en el índice que se va a mover y luego seleccione Propiedades.

  • En el cuadro de diálogo Propiedades del índice, seleccione la página Almacenamiento.

  • Seleccione el grupo de archivos en el que mover el índice.

No se puede mover los índices creados usando una restricción de clave única o primaria por usando el cuadro de diálogo Propiedades del índice. para mover estos índices, es necesario quitar la restricción usando ALTER TABLE (Transact-SQL) con la opción DROP la restricción y vuelva a crear la restricción en el grupo de archivos que desee utilizando ALTER TABLE (Transact-SQL) con la opción ADD CONSTRAINT .

Si la tabla o el índice está particionado, seleccione el esquema de partición en el que mueve el índice.

[Pre SQL Server 2008: Para colocar una tabla existente en un grupo de archivos diferente (SSMS)

  • expanda Bases de datos, expanda la base de datos que contiene la tabla, a continuación, haga clic en tablas.
  • En el panel Detalles, haga clic con el botón derecho en la tabla y luego haga clic en Tabla de diseño.
  • Haga clic con el botón derecho en cualquier columna y luego haga clic en Propiedades.
  • En la pestaña Tablas, en la lista Grupo de archivos de tabla, seleccione el grupo de archivos en el que colocar la tabla.
  • Opcionalmente, en la lista Grupo de archivos de texto, seleccione un grupo de archivos en el que colocar las columnas de texto, imagen y texto. ]

Una forma más eficaz es

para crear un índice agrupado en la tabla . Si la tabla ya tiene un índice agrupado , puede usar el comando CREATE INDEX WITH cláusula DROP_EXISTING para recrear el índice agrupado y moverlo a un grupo de archivos particular . Cuando una tabla tiene un índice agrupado, el nivel de hoja de el índice y las páginas de datos de la tabla se convierten esencialmente en uno y el mismo. debe existir la mesa donde existe la índice agrupado, por lo que si crear o recrear un clúster índice de colocar el índice en un grupo de archivos en particular, estás moviendo la mesa al nuevo grupo de archivos también.

Crédito: Brian Moran

Puede crear (o recrear) el índice agrupado especificando el nuevo grupo de archivos para la cláusula ON y que se moverá la mesa (de datos). Pero si tiene índices no agrupados y los quiere en el otro grupo de archivos, debe descartarlos y volver a crearlos, especificando también el nuevo grupo de archivos en la cláusula ON. Ref.

+0

>> Derecho -Haga clic en cualquier columna y luego haga clic en Propiedades. No, no hay ninguna opción para hacer eso :(¿Captura de pantalla? –

+0

debe haber chinado en SQL 2008, el modo TSQL aún debería funcionar. Lo actualizaré cuando encuentre dónde se movió la opción! –

+0

hmm .... podría publicar el TSql por favor? Estoy intentando lo siguiente (y no funciona): - crear el índice PK_TableFooId en dbo.NorthAmerican_Countries (id) WITH DROP_EXISTING ON SpatialDataReadOnly –

0

Estoy de acuerdo con Marc. Reconstruir clúster funciona bien y es mucho más rápido que Tareas de> reducir Database-> Files->Empty file by migrating data to another file.

Creación de índices permite individualy controll sobre la carga en el sistema sin crear grandes archivos de registro de select * into [your.new.table.] from .....

Cuestiones relacionadas