当默认实例存储的可用空间低于“警告阈值”设置(以占估计默认存储文件夹(DataDir)大小和磁盘可用空间之和的百分比表示)时,监视器将报告警告。当可用空间低于“严重阈值”时,监视器将报告严重警报。监视器未考虑除默认存储文件夹(数据目录)之外的其他文件夹中的数据库或分区。
当默认实例存储的可用空间低于“警告阈值”设置(以占估计默认存储文件夹(数据目录)大小和磁盘可用空间之和的百分比表示)时,监视器将报告警告。当可用空间低于“严重阈值”时,监视器将报告严重警报。监视器未考虑除默认存储文件夹(数据目录)之外的其他文件夹中的数据库或分区。
当以占实例默认存储文件夹(数据目录)大小的百分比表示的可用磁盘空间变得较低时,数据库可能无法正常运行,从而对性能有负面影响,甚至会导致服务器失败。此问题的常见原因可能是由于数据库快速增长,但也可能是与实例默认存储文件夹(数据目录)共享可用磁盘空间的其他数据导致的。
磁盘空间耗尽的解决方案取决于根本原因,其必须在问题发生时根据每种情况进行调查。可以采用以下任一种方法来缓解这种状况:
修改维度设计以删除基础数据源中包括的不必要的成员属性或限制范围,以减少维度大小。
删除 SSAS 实例默认存储文件夹(数据目录)所在的同一驱动器上的占用磁盘空间的数据,但不删除 SSAS 实例本身的任何部分。
使用“存储位置”属性将多维数据集分区移动到具有更多可用磁盘空间的非默认位置。
增加使用磁盘管理器存储数据文件夹的逻辑驱动器的大小。
将数据文件夹整个复制到具有更多可用空间的新驱动器,然后将实例的 msmdsrv.ini 配置中的数据目录设置更改为指向新位置,然后重启服务以使用新位置。
相应修改阈值,以适合环境中的预期工作负荷和状况。
如果实例无需考虑磁盘空间,则完全禁用监视器。
名称 | 说明 | 默认值 |
严重阈值(%) | 如果 AS 实例可用空间(%)性能计数器低于阈值,运行状况将更改为“严重”。 | 5 |
已启用 | 启用或禁用工作流 | 是 |
生成警报 | 定义工作流是否生成警报 | 是 |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 900 |
同步时间 | 使用 24 小时格式指定的同步时间。可以忽略。 |
|
超时(秒) | 指定允许工作流在被关闭并标记为失败之前运行的时间。 | 300 |
警告阈值(%) | 如果 AS 实例可用空间(%)性能计数器低于阈值,但仍高于严重阈值(%),运行状况将更改为“警告”。 | 10 |
Target | Microsoft.SQLServer.2016.AnalysisServices.Instance | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.FreeSpacePercent | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.FreeSpace" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.FreeSpacePercent" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.FreeSpace.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/DataDir$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='TotalOnInstanceDriveGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='InstanceDefaultForlderSizeGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='UsedOnInstanceDriveGB']$</AlertParameter4>
<AlertParameter5>$Target/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/MountPoint$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='ASInstanceFreeSpacePercent']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='ASInstanceFreeSpaceGB']$</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/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Property[Type='SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DataDir>$Target/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>