¿Cómo encontrar tipo y tamaño de contenido de un grupo de archivos en SQL Server?
-
20-12-2019 - |
Pregunta
Tengo una base de datos usando dos grupos de archivos.Llamemos a ellos primarios y FG1.Todos los datos fueron originalmente en primaria y luego se movieron para estar en FG1.Esto se logró moviendo los índices agrupados a FG1.Los otros índices se eliminaron y se recrearon sin especificar un grupo de archivos, pero FG1 se definió como predeterminado para que ahora estén efectivamente en FG1.
Sin embargo, el archivo de primario todavía se llena a lo largo del tiempo.
¿Cómo puedo encontrar el tipo de cosas que permanece en primaria, incluido su tamaño? Mi objetivo es realmente llegar a todo a FG1 para que la primaria ya no se llena.
Solución
Aquí hay un script que enumera todos los objetos y todos los índices en todos los grupos de archivos:
http://gallery.technet.microsoft.com/scriptcenter/c7483555-CC22-4F6C-B9C4-90811EB3BDB6
-- List all Objects and Indexes
-- per Filegroup / Partition and Allocation Type
-- including the allocated data size
SELECT DS.name AS DataSpaceName
,AU.type_desc AS AllocationDesc
,AU.total_pages / 128 AS TotalSizeMB
,AU.used_pages / 128 AS UsedSizeMB
,AU.data_pages / 128 AS DataSizeMB
,SCH.name AS SchemaName
,OBJ.type_desc AS ObjectType
,OBJ.name AS ObjectName
,IDX.type_desc AS IndexType
,IDX.name AS IndexName
FROM sys.data_spaces AS DS
INNER JOIN sys.allocation_units AS AU
ON DS.data_space_id = AU.data_space_id
INNER JOIN sys.partitions AS PA
ON (AU.type IN (1, 3)
AND AU.container_id = PA.hobt_id)
OR
(AU.type = 2
AND AU.container_id = PA.partition_id)
INNER JOIN sys.objects AS OBJ
ON PA.object_id = OBJ.object_id
INNER JOIN sys.schemas AS SCH
ON OBJ.schema_id = SCH.schema_id
LEFT JOIN sys.indexes AS IDX
ON PA.object_id = IDX.object_id
AND PA.index_id = IDX.index_id
ORDER BY DS.name
,SCH.name
,OBJ.name
,IDX.name
Gracias @ Raphaël Althaus para el enlace en los comentarios sobre la pregunta.
Con respecto al segundo punto en mi pregunta, no pude mover los objetos restantes de la primaria, ya que son datos LOB.Según la documentación de Crear tabla , "El almacenamiento de cualquier columna grandeLos datos especificados en la tabla Crear no se pueden alterar posteriormente ".Mala suerte.