Свободное место в журнале транзакций (\%)

Microsoft.SQLServer.2012.Database.TransactionLogSpaceFreePercentMonitor (UnitMonitor)

Монитор свободного пространства в журнале транзакций (\%) для баз данных 2012

Knowledge Base article:

Сводка

Монитор свободного пространства в журнале транзакций (%) для баз данных SQL 2012

Причины

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

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

Данные производительности базы данных

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

Автоматическое увеличение не разрешено

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

Автоматическое увеличение разрешено

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

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

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

Решения

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

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

Element properties:

TargetMicrosoft.SQLServer.2012.Database
Parent MonitorMicrosoft.SQLServer.2012.Database.DBSpaceMonitor
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2012.Database.TransactionLogSpaceFreePercent.MonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Свободное пространство журнала транзакций SQL DB 2012 (\%) слишком мало
В базе данных {0} экземпляра SQL Server {1} на компьютере {2} недостаточно свободного места в журнале транзакций (\%). Дополнительные сведения см. на вкладке «Контекст предупреждения».
RunAsDefault

Source Code:

<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>
</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>
<ObjectName>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/PerformanceCounterObject$:TransactionLog</ObjectName>
<CounterName>Log Free Space (%)</CounterName>
<InstanceName/>
<DatabaseName>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<Value>$Data/Property[@Name='DBLogFreeSpacePercent']$</Value>
</Configuration>
</UnitMonitor>