Espacio disponible de contenedor de grupos de archivos de datos con optimización para memoria

Microsoft.SQLServer.2016.Monitor.Container.FreeSpacePercent (UnitMonitor)

El monitor proporciona una advertencia cuando el espacio disponible en disco para el contenedor del grupo de archivos de datos con optimización para memoria es inferior al valor del umbral de advertencia, expresado como porcentaje de la suma del tamaño del contenedor del grupo de archivos de datos con optimización para memoria más el espacio disponible en disco. El monitor notifica una alerta crítica cuando el espacio disponible es inferior al umbral crítico.

Knowledge Base article:

Resumen

El monitor proporciona una advertencia cuando el espacio disponible en disco para el contenedor del grupo de archivos de datos con optimización para memoria es inferior al valor del umbral de advertencia, expresado como porcentaje de la suma del tamaño del contenedor del grupo de archivos de datos con optimización para memoria más el espacio disponible en disco. El monitor notifica una alerta crítica cuando el espacio disponible es inferior al umbral crítico.

La carpeta del contenedor del grupo de archivos de datos con optimización para memoria normalmente crece con el tiempo a medida que se agregan más datos a las tablas de datos con optimización para memoria. Como tal, los administradores querrán supervisar para asegurarse de que queda espacio suficiente en la ubicación de almacenamiento para la carpeta del contenedor.

Causas

Si el espacio disponible en el disco de la unidad donde está configurada la ubicación de almacenamiento de la base de datos es demasiado bajo, se pueden producir errores que impidan el procesamiento correcto de los datos, retrasen las consultas del usuario o afecten a otras aplicaciones que comparten la misma asignación de espacio en el disco.

El almacenamiento se asigna como parte de las operaciones DML en las tablas con optimización para memoria duradera. Hay que configurar el almacenamiento hasta el cuádruple del tamaño de los datos con optimización para memoria de las tablas con optimización para memoria duradera. Si ha configurado el almacenamiento correctamente, pero el espacio de almacenamiento libre sigue siendo bajo, puede que la E/S por segundo admitida por los contenedores no pueda admitir la demanda de la carga de trabajo. La recomendación general para los contenedores es admitir el triple de la E/S por segundo de la frecuencia de generación de datos para atender el rellenado de los archivos delta y de datos y para la operación de combinación automática que tiene que leer los archivos delta y de datos de origen y, después, combinarlos en un CFP de destino.

Soluciones

Las soluciones para la escasez del espacio disponible de disco dependen de las causas raíz, que se deben investigar en cada caso cuando se produzca el problema. Existen muchos enfoques potenciales para paliar esta situación:

Parámetros invalidables

Nombre

Descripción

Valor predeterminado

Prioridad de alerta

Define la prioridad de la alerta.

Normal

Gravedad de alerta

Define la gravedad de la alerta.

Error

Umbral crítico

El monitor cambiará al estado "Crítico" si el valor se sitúa por debajo de este umbral.

10

Habilitado

Habilita o deshabilita el flujo de trabajo.

Genera alertas

Define si el flujo de trabajo genera una alerta.

Intervalo (segundos)

Intervalo de tiempo periódico en segundos en que se ejecuta el flujo de trabajo.

900

Retraso de script (milisegundos)

Este parámetro define el retraso entre las consultas T-SQL consecutivas que ejecuta el flujo de trabajo. Puede ayudar a reducir la superficie que genera el flujo de trabajo en caso de gran número de objetos de destino. Consulte con el soporte técnico de Microsoft antes de cambiar este parámetro.

0

Hora de sincronización

Hora de sincronización especificada en un formato de 24 horas. Se puede omitir.

 

Tiempo de espera (segundos)

Especifica el tiempo durante el que se puede ejecutar el flujo de trabajo antes de que se cierre y se marque como error.

300

Umbral de advertencia

El monitor cambiará al estado "Advertencia" si el valor se sitúa por debajo de este umbral.

20

Element properties:

TargetMicrosoft.SQLServer.2016.Container
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.MonitorType.Container.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: espacio disponible insuficiente para el contenedor de grupos de archivos de datos con optimización para memoria
Solo está disponible para el contenedor de grupos de archivos de datos con optimización para memoria "{0}" de la unidad "{5}" el {7} \% del espacio libre disponible, que es un valor inferior al umbral configurado para la alerta.
Servidor: {4}
Instancia de SQL Server: {3}
Base de datos: {2}
Grupo de archivos: {1}
Contenedor: {0}
Unidad (punto de montaje): {5}
Tamaño en disco: {6} MB
Espacio disponible en contenedor de grupo de archivos de datos con optimización para memoria: {8} MB ({7} \%)
Tamaño de contenedor de grupo de archivos de datos con optimización para memoria: {9} MB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.Monitor.Container.FreeSpacePercent" Target="SQL2016Core!Microsoft.SQLServer.2016.Container" ParentMonitorID="SystemHealth!System.Health.PerformanceState" TypeID="Microsoft.SQLServer.2016.MonitorType.Container.FreeSpacePercent" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Monitor.Container.FreeSpacePercent.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Container"]/ContainerName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.FileGroup"]/GroupName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter3>
<AlertParameter4>$Target/Host/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter4>
<AlertParameter5>$Target/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter5>
<AlertParameter6>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Container"]/ContainerStorage$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='DriveTotalSizeMB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='FreeSpacePercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='FreeSpaceSpaceMB']$</AlertParameter9>
<AlertParameter10>$Data/Context/Property[@Name='AllocatedSizeMB']$</AlertParameter10>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="ContainerFreeSpaceCritical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="ContainerFreeSpaceWarning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="ContainerFreeSpaceSuccess" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ConnectionString>$Target/Host/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<DBFileId>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Container"]/ContainerID$</DBFileId>
<Value>Property[@Name='FreeSpacePercent']</Value>
<CriticalThreshold>10</CriticalThreshold>
<WarningThreshold>20</WarningThreshold>
<TimeoutSeconds>300</TimeoutSeconds>
<ScriptDelayMsec>0</ScriptDelayMsec>
</Configuration>
</UnitMonitor>