Свободное место в контейнере файловой группы данных, оптимизированных для памяти

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

Монитор создает предупреждение, когда объем доступного дискового пространства для контейнера файловой группы оптимизированных для памяти данных опускается ниже порогового значения предупреждения, выраженного в процентах от суммы размера контейнера файловой группы оптимизированных для памяти данных и свободного дискового пространства. Монитор создает критическое предупреждение, если доступное пространство опускается ниже критического порогового значения.

Knowledge Base article:

Сводка

Монитор создает предупреждение, когда объем доступного дискового пространства для контейнера файловой группы оптимизированных для памяти данных опускается ниже порогового значения предупреждения, выраженного в процентах от суммы размера контейнера файловой группы оптимизированных для памяти данных и свободного дискового пространства. Монитор создает критическое предупреждение, если доступное пространство опускается ниже критического порогового значения.

Размер папки контейнера файловой группы оптимизированных для памяти данных обычно растет по мере добавления данных в оптимизированные для памяти таблицы. Поэтому администраторы должны следить за размером, чтобы в расположении папки контейнера оставалось достаточно свободного места.

Причины

Когда свободного места на диске на диске, где настроено место хранения базы данных, становится слишком мало, могут возникать сбои, которые будут мешать успешно обрабатывать данные, задерживая запросы пользователей, или влияя на другие приложения, которые разделяют то же самое распределение дискового пространства.

Хранилище выделяется в рамках операций DML для устойчивых таблиц, оптимизированных для памяти. Вам нужно настроить хранилище до четырехкратного размера оптимизированных для памяти данных для оптимизированных для памяти таблиц. Если вы правильно настроили хранилище, но свободного пространства все еще недостаточно, причина может быть в том, что уровень операций ввода-вывода в секунду, поддерживаемый контейнерами, не выдерживает рабочую нагрузку. Общая рекомендация для контейнеров — обеспечить поддержку трехкратного уровня операций ввода-вывода в секунду на скорости создания данных для учета начального заполнения файлов данных или разностных файлов и для автоматической операции слияния, которая должна считать исходные файлы данных или разностные файлы, а затем объединить их в целевую пару файлов контрольных точек.

Решения

Решение(я) в случае недостаточности доступного дискового пространства зависит от основной причины, которые должны быть исследованы в каждом случае, когда возникает эта проблема. Положение может быть облегчено с помощью любого из множества возможных подходов:

Переопределяемые параметры

Название

Описание

Значение по умолчанию

Приоритет предупреждения

Определяет приоритет предупреждения.

Обычные

Серьезность предупреждения

Определяет серьезность предупреждения.

Ошибка

Критическое пороговое значение

Монитор изменит состояние на "Критическое", если значение опускается ниже этого порогового значения.

10

Включено

Включает или отключает рабочий процесс.

Да

Создает предупреждения

Определяет, создает ли рабочий процесс предупреждения.

Да

Интервал (в секундах)

Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс.

900

Задержка скрипта (в миллисекундах)

Этот параметр определяет задержку между последовательными запросами T-SQL, выполняемыми в рабочем процессе. Это может помочь уменьшить нагрузку, создаваемую рабочим процессом в случае большого числа целевых объектов. Пожалуйста, проконсультируйтесь со службой поддержки Майкрософт перед изменением этого параметра.

0

Время синхронизации

Время синхронизации указывается в 24-часовом формате и может быть опущено.

 

Время ожидания (в секундах)

Определяет время, в течение которого возможно выполнение рабочего процесса перед закрытием и пометкой как сбойный.

300

Пороговое значение предупреждения

Монитор изменит состояние на "Предупреждение", если значение опускается ниже этого порогового значения.

20

Element properties:

TargetMicrosoft.SQLServer.2016.Container
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.MonitorType.Container.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL 2016: недостаточно свободного места для контейнера файловой группы данных, оптимизированных для памяти.
Лишь {7} \% свободного пространства доступно для контейнера файловой группы оптимизированных для памяти данных "{0}" на диске "{5}". Это значение меньше настроенного порогового значения для предупреждения.
Сервер: {4}
Экземпляр SQL Server: {3}
База данных: {2}
Файловая группа: {1}
Контейнер: {0}
Диск (точка подключения): {5}
Размер диска: {6} МБ
Свободное место в контейнере файловой группы оптимизированных для памяти данных: {8} МБ ({7} \%)
Размер контейнера файловой группы оптимизированных для памяти данных: {9} МБ
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>Error</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>