Freier Speicherplatz des speicheroptimierten Datendateigruppen-Containers

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

Der Monitor gibt eine Warnung aus, wenn der freie Speicherplatz für den speicheroptimierten Datendateigruppen-Container unter die Einstellung für den Warnungsschwellenwert fällt. Dieser Wert wird als Prozentsatz der Gesamtgröße des speicheroptimierten Datendateigruppen-Containers plus freiem Speicherplatz ausgedrückt. Wenn der freie Speicherplatz unter den kritischen Schwellenwert fällt, gibt der Monitor eine kritische Warnung aus.

Knowledge Base article:

Zusammenfassung

Der Monitor gibt eine Warnung aus, wenn der freie Speicherplatz für den speicheroptimierten Datendateigruppen-Container unter die Einstellung für den Warnungsschwellenwert fällt. Dieser Wert wird als Prozentsatz der Gesamtgröße des speicheroptimierten Datendateigruppen-Containers plus freiem Speicherplatz ausgedrückt. Wenn der freie Speicherplatz unter den kritischen Schwellenwert fällt, gibt der Monitor eine kritische Warnung aus.

Der Ordner des speicheroptimierten Datendateigruppen-Containers nimmt normalerweise im Lauf der Zeit an Größe zu, da immer mehr Daten zu speicheroptimierten Tabellen hinzugefügt werden. Administratoren sollten den Speicherort daher überwachen, um sicherzustellen, dass genügend Speicherplatz für den Containerordner verbleibt.

Ursachen

Wenn auf dem Laufwerk, auf dem der Speicherort der Datenbank konfiguriert wurde, zu wenig Speicherplatz verfügbar ist, können Fehler entstehen, die die erfolgreiche Verarbeitung von Daten verhindern, Benutzerabfragen verzögern oder andere Anwendungen beeinträchtigen können, denen der gleiche Speicherplatz auf dem Datenträger zugewiesen ist.

Die Speicherzuweisung erfolgt im Rahmen von DML-Vorgängen in den langlebigen speicheroptimierten Tabellen. Sie müssen eine Speichermenge bis zum Vierfachen der Größe der langlebigen speicheroptimierten Daten konfigurieren. Wenn Sie den Speicher ordnungsgemäß konfiguriert haben, der Speicherplatz jedoch immer noch nicht ausreicht, können die von den Containern unterstützten IOPS-Vorgänge möglicherweise die Arbeitsauslastungsanforderungen nicht unterstützen. Allgemein wird für Container der dreifache IOPS-Wert der Datengenerierungsraten empfohlen, um die anfängliche Auffüllung der Daten-/Deltadateien und den automatischen Mergevorgang zu berücksichtigen, bei dem die Quelldaten-/Deltadateien gelesen und dann in einer Ziel-CFP zusammengeführt werden müssen.

Lösungen

Die Lösungen bei wenig verfügbarem Speicherplatz auf dem Datenträger sind von den jeweiligen Ursachen abhängig, die bei jedem Auftreten dieses Problems untersucht werden müssen. Zur Behebung sind zahlreiche Herangehensweisen möglich:

Überschreibbare Parameter

Name

Beschreibung

Standardwert

Warnungspriorität

Definiert die Warnungspriorität.

Normal

Warnungsschweregrad

Definiert den Warnungsschweregrad.

Fehler

Maximale Azure-Dateigröße (MB)

Die maximale Größe der im Azure-Blobspeicher gespeicherten Datendatei. Im Workflow wird dieser Wert als maximale Speicherkapazität für jede Datei betrachtet.

1048576

Kritischer Schwellenwert

Der Status des Monitors wechselt zu "Kritisch", wenn der Wert unter diesen Schwellenwert sinkt.

10

Aktiviert

Aktiviert oder deaktiviert den Workflow.

Ja

Generiert Warnungen

Definiert, ob der Workflow eine Warnung generiert.

Ja

Intervall (Sekunden)

Gibt das Wiederholungsintervall in Sekunden für die Ausführung des Workflows an.

900

Synchronisierungszeit

Die Synchronisierungszeit, angegeben im 24-Stunden-Format. Dieser Wert kann ausgelassen werden.

 

Timeout (Sekunden)

Gibt die Zeit an, zu der der Workflow ausgeführt werden dann, bevor er geschlossen und als fehlerhaft markiert wird.

300

Timeout für Datenbankverbindung (Sekunden)

Es tritt ein Fehler beim Workflow auf, und ein Ereignis wird registriert, wenn der Workflow nicht innerhalb des angegebenen Zeitraums auf die Datenbank zugreifen kann.

15

Warnungsschwellenwert

Der Status des Monitors wechselt zu "Warnung", wenn der Wert unter diesen Schwellenwert sinkt.

20

Element properties:

TargetMicrosoft.SQLServer.Windows.Container
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Container.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL unter Windows: Nicht genügend freier Speicherplatz für speicheroptimierten Datendateigruppen-Container.
Für den speicheroptimierten Datendateigruppen-Container "{0}" ist nur {6} \% freier Speicherplatz verfügbar. Dieser Wert liegt unter dem für die Warnung konfigurierten Schwellenwert.
Server: {4}
SQL Server-Instanz: {3}
Datenbank: {2}
Dateigruppe: {1}
Container: {0}
Datenträgergröße: {5} MB
Freier Speicherplatz für speicheroptimierten Datendateigruppen-Container: {7} MB ({6} \%)
Größe des speicheroptimierten Datendateigruppen-Containers: {8} MB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Container" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Container.FreeSpacePercent" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</AlertParameter3>
<AlertParameter4>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Filegroup"]/GroupName$</AlertParameter4>
<AlertParameter5>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='DiskTotalSizeMB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='FreeSpacePercent']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='FreeSpaceMB']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='AllocatedSizeMB']$</AlertParameter9>
</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>
<MachineName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<FileName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</FileName>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
<CriticalThreshold>10</CriticalThreshold>
<WarningThreshold>20</WarningThreshold>
<ConnectionString>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>