Mover todos los índices no agrupados a otro grupo de archivos en SQL Server
-
26-09-2019 - |
Pregunta
En SQL Server 2008, Quiero mover todos los índices no agrupados en una base de datos a un grupo de archivos secundario. ¿Cuál es la manera más fácil de hacer esto?
Solución
Ejecutar este secuencia de comandos actualizada para crear un procedimiento almacenado llamado MoveIndexToFileGroup
. Este procedimiento se desplaza todos los índices no agrupados en una mesa a un grupo de archivos especificado. Incluso soporta las columnas INCLUDE
que algunos otros scripts no lo hacen. Además, no va a reconstruir o mover un índice que ya está en el grupo de archivo deseado. Una vez que ha creado el procedimiento, lo llaman así:
EXEC MoveIndexToFileGroup @DBName = '<your database name>',
@SchemaName = '<schema name that defaults to dbo>',
@ObjectNameList = '<a table or list of tables>',
@IndexName = '<an index or NULL for all of them>',
@FileGroupName = '<the target file group>';
Para crear un script que se ejecutará esto para cada tabla en su base de datos, cambiar su salida de la consulta de texto, y ejecutar la siguiente:
SELECT 'EXEC MoveIndexToFileGroup '''
+TABLE_CATALOG+''','''
+TABLE_SCHEMA+''','''
+TABLE_NAME+''',NULL,''the target file group'';'
+char(13)+char(10)
+'GO'+char(13)+char(10)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_SCHEMA, TABLE_NAME;
Por favor remítase a la original Registrarse para más detalles. No he escrito este procedimiento, pero actualizado de acuerdo a las respuestas del blog y ha confirmado que funciona tanto en SQL Server 2005 y 2008.
Actualizaciones
- modificado el guión al trabajo en SQL Server 2012. Fusioné sus cambios.
- El procedimiento falla cuando la tabla tiene la opción de
IGNORE_DUP_KEY
. Hay una solución para esto todavía. - @srutzky señaló el procedimiento no garantiza preservar el orden de un índice y sugerencias sobre cómo solucionarlo. He actualizado el procedimiento en consecuencia.
- ojiNY observado el procedimiento dejado fuera filtros de índice (por compatibilidad con SQL 2005). Por su sugerencia, les añadió de nuevo.
Otros consejos
Script ellas, cambie la cláusula ON, soltarlos, vuelva a ejecutar el nuevo guión. No hay alternativa realmente.
Afortunadamente, hay scripts en el Interwebs como este uno que se ocupará de secuencias de comandos para usted.
Actualización: Esta cosa va a tomar mucho tiempo para hacerlo manualmente el paso 2 si está utilizando gestor de MS SQL Server 2008R2 o anterior. Solía ??gestor de SQL Server 2014, por lo que funciona bien (debido a la forma en que la caída de la exportación y crear índice es fácil de modificar)
Traté de ejecutar secuencias de comandos en el servidor SQL 2014 y tengo algún problema, soy demasiado perezoso para detectar los problemas, por lo que pensar en otra solución que no depende de la versión de SQL Server que está ejecutando.
2.Update su guión, quitar todo lo relacionado con la gota crear tablas, mantener la cosa pertenecen a indexs. y reemplazar el índice original con el nuevo índice (en mi caso, puedo reemplazar ON [PRIMARY] por ON [SECUNDARIA] [] 5
- Ejecutar script! Y esperar hasta que se haga.
(Es posible que desee guardar la secuencia de comandos para ejecutar en algún ambiente otros) .