Оставшееся свободное место в базе данных

Microsoft.SQLServer.Windows.Monitor.Database.RowsSizePercent (UnitMonitor)

Отслеживает свободное место в базе данных и на носителе, где размещается база данных, в процентах. Примечание: по умолчанию этот монитор отключен. Для его включения воспользуйтесь переопределениями. Этот монитор не учитывает свободное место для файловых групп FILESTREAM и файловых групп данных, оптимизированных для памяти.

Knowledge Base article:

Сводка

Отслеживает свободное место в базе данных и на носителе, где находится база данных. Свободное место на носителе, где размещается база данных, включается в общее свободное место, только если хотя бы для одного из файлов разрешено автоматическое увеличение. Обратите внимание, что этот монитор не учитывает свободное место для файловых групп FILESTREAM и файловых групп данных, оптимизированных для памяти.

Причины

Неисправное состояние вызвано нехваткой свободного места для всех файлов базы данных. Нехватка доступного места может быть вызвана следующими причинами:

Для просмотра данных о производительности используются следующие ссылки: Данные о производительности базы данных

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

Без автоматического увеличения

У файла без автоматического увеличения размера свободное место будет равно разности между первоначальным размером и занятым местом.

Автоматическое увеличение включено

В дополнение к разности между размером файла и занятым местом свободное место у файлов со включенным автоматическим увеличением будет равно меньшему из двух значений: разность между максимальным размером и размером файла и оставшийся объем свободного места на диске.

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

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

Разрешения

Эта проблема может быть устранена следующим образом.:

См. электронную документацию на SQL Server: Архитектура файлов и файловых групп

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

Имя

Описание

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

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

Определение приоритета оповещений.

Высокий

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

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

MatchMonitorHealth

Максимальный размер файла Azure (МБ)

Максимальный размер файла данных в хранилище BLOB-объектов Azure. Рабочий процесс будет рассматривать это значение как максимальный объем хранения каждого файла.

1048576

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

Монитор изменит свое состояние на критическое, если значение опустится ниже указанного порогового значения. Если значение находится между этим пороговым значением и пороговым значением предупреждения (включительно), то монитор будет находиться в состоянии предупреждения.

10

Включено

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

Нет

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

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

Да

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

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

900

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

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

 

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

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

300

Порог "Предупреждение"

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

20

Element properties:

TargetMicrosoft.SQLServer.Windows.Database
Parent MonitorMicrosoft.SQLServer.Windows.Rollup.Database.DBSpace
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Database.DBSize
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL в Windows: закончилось свободное место в базе данных
В базе данных "{0}" экземпляра SQL Server "{1}" на компьютере "{2}" заканчивается свободное место. Дополнительные сведения см. на вкладке "Контекст предупреждения".
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Database.RowsSizePercent" Accessibility="Public" Enabled="true" Target="SqlDiscW!Microsoft.SQLServer.Windows.Database" ParentMonitorID="Microsoft.SQLServer.Windows.Rollup.Database.DBSpace" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Database.DBSize" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Database.RowsSizePercent.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='DBFreeSpaceMB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='DBFreeSpacePercent']$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Error"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
<ValuePropertyName>DBFreeSpacePercentMon</ValuePropertyName>
<Threshold1>10</Threshold1>
<Threshold2>20</Threshold2>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>