Конфигурация автоматического сжатия

Microsoft.SQLServer.2008.Database.Configuration.AutoShrink (UnitMonitor)

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

Knowledge Base article:

Сводка

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

Настройка

При установке параметра автоматического сжатия статистики в значение ON файлы базы данных подлежат периодическому сжатию. И файлы данных, и файлы журналов могут быть автоматически сжаты. Автоматическое сжатие уменьшает размер журнала транзакций только в случае, если выбрана простая модель восстановления базы данных или была создана резервная копия журнала. Если этот параметр установлен в состояние OFF, файлы базы данных не будут автоматически сжиматься при периодической проверке на неиспользуемое пространство. При включенном параметре AUTO_SHRINK файлы будут сжаты, если более 25 процентов файла содержит неиспользуемое пространство. Файл будет сжат до размера, в котором 25 процентов файла — неиспользуемое место, или до того размера, который был у файла при создании, в зависимости от того, какая величина больше. Нельзя сжать базу данных, находящуюся в состоянии только для чтения.

Использование автоматического сжатия может привести к излишней фрагментации индекса, увеличению размера журнала транзакций и количества операций ввода-вывода. Автоматическое сжатие следует использовать только в случае, если вероятность дальнейшего увеличения базы данных мала и после сжатия можно выполнить инструкцию ALTER INDEX REORGANIZE.

AUTO_SHRINK {ON | OFF}

Причины

Если параметр не соответствует требуемому значению, формируется предупреждение. Монитор настроен для создания предупреждения, если для данного параметра задано значение ON.

Решения

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

Либо, если монитор неважен для базы данных:

Внешнее

См. дополнительные сведения об этих настройках: Параметры ALTER DATABASE SET (Transact-SQL)

Element properties:

TargetMicrosoft.SQLServer.2008.Database
Parent MonitorMicrosoft.SQLServer.2008.Database.AutomaticConfiguration
CategoryConfigurationHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBConfigurationStatus
RemotableTrue
AccessibilityPublic
Alert Message
Ошибка конфигурации автоматического сжатия
Параметр автоматического сжатия для базы данных "{0}" в экземпляре SQL Server "{1}" на компьютере "{2}" не соответствует рекомендациям.
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.Database.Configuration.AutoShrink" Accessibility="Public" Enabled="false" Target="SQL2008Core!Microsoft.SQLServer.2008.Database" ParentMonitorID="Microsoft.SQLServer.2008.Database.AutomaticConfiguration" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBConfigurationStatus" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.Database.Configuration.AutoShrink.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</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="ConfigurationValueOK" MonitorTypeStateID="ConfigurationValueOK" HealthState="Success"/>
<OperationalState ID="ConfigurationValueNotOK" MonitorTypeStateID="ConfigurationValueNotOK" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ConnectionString>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<IntervalSeconds>43200</IntervalSeconds>
<SyncTime/>
<ConfigValue>AutoShrink</ConfigValue>
<ExpectedValue>OFF</ExpectedValue>
<ExcludeOnExpress>false</ExcludeOnExpress>
<SQLSKU>$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/Edition$</SQLSKU>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>