Свободное место в базе данных

Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.TabularDatabase.FreeSpace (UnitMonitor)

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

Knowledge Base article:

Сводка

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

Причины

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

Решения

Решение проблемы нехватки дискового пространства зависит от первопричин, которые нужно исследовать в каждом конкретном случае. Ситуацию можно улучшить с помощью следующих подходов:

Внешнее

Настройка свойств сервера для служб Analysis Services

Документация TechNet по счетчикам производительности SSAS

Руководство по настройке производительности многомерных служб SSAS

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

Название

Описание

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

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

Состояние работоспособности изменяется на "Критическое", если значение счетчика производительности свободного места (в %) становится ниже порогового значения.

5

Включено

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

Да

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

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

Да

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

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

900

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

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

 

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

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

300

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

Состояние работоспособности изменяется на "Предупреждение", если значение счетчика производительности "Свободное место в базе данных (%)" опускается ниже порогового значения, но все еще превышает критическое пороговое значение (в %).

10

Element properties:

TargetMicrosoft.SQLServer.2016.AnalysisServices.TabularDatabase
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2016.AnalysisServices.MonitorType.Database.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
SSAS 2016: недостаточно свободного места в базе данных
Лишь {5} \% свободного пространства доступно для папки табличной базы данных экземпляра SSAS "{2}" на диске "{4}". Это значение меньше порогового значения, настроенного для монитора.
Диск (точка подключения): {4}
Расположение хранилища: {2}
Размер диска: {1} ГБ
Свободное место базы данных: {6} ГБ ({5}\%)
Размер папки базы данных: {3} ГБ
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.TabularDatabase.FreeSpace" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.TabularDatabase" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Database.FreeSpacePercent" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.TabularDatabase.DatabaseFreeSpace.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='UsedOnDatabaseDriveGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='TotalOnDatabaseDriveGB']$</AlertParameter2>
<AlertParameter3>$Target/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Database']/StorageLocation$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='DatabaseDefaultForlderSizeGB']$</AlertParameter4>
<AlertParameter5>$Target/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Database']/MountPoint$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='DatabaseFreeSpacePercent']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='DatabaseFreeSpaceGB']$</AlertParameter7>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Above" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Between" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="Below" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/ServiceName$</ServiceName>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DataDir>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/DataDir$</DataDir>
<CriticalThreshold>5</CriticalThreshold>
<WarningThreshold>10</WarningThreshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>