Монитор свободного пространства в журнале транзакций (\%) для баз данных 2012
Монитор свободного места в журнале транзакций (в %) для БД SQL 2012
Неработоспособное состояние вызвано недостатком свободного места во всех файлах журнала. Нехватка свободного места может быть вызвана следующими причинами:
неверные параметры конфигурации (размер, максимальный размер, автоматическое увеличение и т. д.);
На носителе осталось слишком мало места.
Отсутствие периодических резервных копий
Журнал не усекается.
Параметр "Включить место на диске" для этого монитора установлен в значение FALSE для рабочих нагрузок, ожидающих увеличения объема своих файлов.
Следующая ссылка позволяет просмотреть данные производительности:
Данные производительности базы данных
Этот монитор вычисляет доступное место для каждого файла журнала в базе данных в зависимости от конфигурации каждого файла:
Автоматическое увеличение не разрешено
Для файла без автоматического увеличения размера свободное место будет равно разности между первоначальным размером и используемым местом.
Автоматическое увеличение разрешено
В дополнение к разности между размером файла и используемым местом доступное место для файлов со включенным автоматическим увеличением будет равно меньшему из двух значений: разность между максимальным размером и размером файла или объем свободного места, оставшегося на диске.
Малый объем доступного места для файлов журнала базы данных с автоматическим увеличением может означать, что файл почти достиг предельного значения для логического диска, на котором он размещен. Для файлов с разрешенным автоматическим увеличением и заданным максимальным размером малый объем доступного места также может означать, что файл почти достиг максимального заданного размера.
При расчете доступного пространства также необходимо принимать во внимание, что файл может не увеличиваться, если размер увеличения файла больше, чем свободное пространство на диске. Кроме того, увеличение невозможно, если разница между максимальным размером и текущим размером файла меньше размера увеличения. В таких ситуациях свободное место на диске не включается в доступное пространство, так как дальнейшее увеличение файла невозможно.
Эта проблема может быть устранена следующим образом.
Увеличение выделенного размера для файлов журнала, если автоматическое увеличение не разрешено
Увеличение значения максимального размера для файла журнала, если разрешено автоматическое увеличение
Включение автоматического увеличения хотя бы для одного файла
Перемещение файлов журнала на другой диск с большим свободным местом, если ограниченно место для увеличения файлов
Регулярное выполнение резервного копирования файлов журнала для режимов восстановления FULL и BULK-LOGGED
Определите причину, по которой журнал не усекается:
Давно открытые выполняющиеся активные транзакции
Давно выполняющиеся операции резервного копирования
Реплицированная транзакция давно открыта (репликация транзакций)
Зеркальный сервер запаздывает относительно основного сервера (зеркальное отображение базы данных)
Установите для параметра "Включить место на диске" этого монитора значение TRUE для тех рабочих нагрузок, файлы которых будут увеличиваться.
Изменение пороговых значений для этого монитора для обеспечения соответствия рабочей нагрузке
В другом случае, если свободное место в файле журнала не имеет значения для базы данных:
Отключите данный монитор для этой базы данных или для всех баз данных.
См. электронную документацию по SQL Server: Архитектура файлов и файловых групп.
Имя | Описание | Значение по умолчанию |
Приоритет предупреждения | Определяет приоритет предупреждения. | Обычные |
Серьезность предупреждения | Определяет серьезность предупреждения. | Ошибка |
Включено | Включает или отключает рабочий процесс. | Нет |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения. | Да |
Интервал (в секундах) | Повторяющийся интервал времени в секундах, по истечении которого запускается рабочий процесс. | 900 |
Пороговое значение | Пороговое значение для предупреждения | 10 |
Время ожидания (секунды) | Задает допустимое время выполнения рабочего процесса, перед тем как он будет закрыт и отмечен как сбойный. | 300 |
Target | Microsoft.SQLServer.2012.Database | ||
Parent Monitor | Microsoft.SQLServer.2012.Database.DBSpaceMonitor | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor" Accessibility="Public" Enabled="false" Target="SQL2012Core!Microsoft.SQLServer.2012.Database" ParentMonitorID="Microsoft.SQLServer.2012.Database.DBSpaceMonitor" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='DBLogFreeSpaceMB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='DBLogFreeSpacePercent']$</AlertParameter5>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Normal" MonitorTypeStateID="Normal" HealthState="Success"/>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<Threshold>10</Threshold>
<ConnectionString>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</SqlInstanceName>
<DatabaseName>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
</Configuration>
</UnitMonitor>