监视在一定采样期间数据库可用空间的显著更改。注意: 默认情况下,此监视器为禁用状态。请根据需要使用替代进行启用。
监视在一定的采样期间数据库可用空间值的显著更改。值的快速显著更改可能表示存在问题。
不正常状态是由在一定的采样期间可用空间的显著更改引起的。可能的原因有:
将文件的大规模自动增长设置设置为自动增长。
快速增长的文件在短时间内占用大量可用空间。
外部对象或文件占用此文件所在磁盘上的大量可用空间
使用以下链接来查看性能数据: 数据库性能数据
此监视器根据每个文件的配置聚合文件组内每个文件的可用空间:
不自动增长
对于不进行自动增长的文件,可用空间为文件的初始大小与已用空间的差值。
启用自动增长
除了文件大小与已用空间的差值之外,启用了自动增长的文件的可用空间将是最大大小与文件大小的差值和磁盘上剩余可用空间这两者的较小值。
可用空间计算还要考虑: 如果文件的增长量大于磁盘剩余的可用空间量,文件可能无法增长;如果最大大小与当前文件大小之间的差值小于增长量,文件也将无法增长。在这些情况下,磁盘上剩余的可用空间不作为可用空间的一部分包括在内,因为我们不能再增长了。
可以通过以下任一方法解决此问题: :
减小启用自动增长选项的文件的增长量
修改此监视器的阈值以满足工作负荷的要求
或者,如果对于数据库无需考虑空间百分比更改: :
禁用此特定数据库或所有数据库的此监视器
名称 | 说明 | 默认值 |
警报优先级 | 定义警报优先级。 | 正常 |
警报严重性 | 定义警报严重性。 | MatchMonitorHealth |
Azure 文件最大大小(MB) | 存储在 Azure BLOB 存储中的数据文件的最大大小。工作流会将此值视为每个文件的最大存储容量。 | 1048576 |
严重阈值 | 如果值超过此阈值,监视器会将其状态更改为“严重”。值介于此阈值与警告阈值(包括警告阈值)之间会导致监视器处于警告状态。 | 45 |
已启用 | 启用或禁用工作流。 | 否 |
生成警报 | 定义工作流是否生成警报。 | 是 |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 900 |
样本数 | 指示在状态发生更改之前测量值应违反阈值的次数。 | 5 |
同步时间 | 使用 24 小时格式指定的同步时间。可以忽略。 |
|
超时(秒) | 指定允许工作流在被关闭并标记为失败之前运行的时间。 | 300 |
警告阈值 | 警告阈值。超过该阈值会导致监视器至少进入警告状态。 | 25 |
Target | Microsoft.SQLServer.2016.Database | ||
Parent Monitor | Microsoft.SQLServer.2016.Database.DBSpaceMonitor | ||
Category | PerformanceHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.DBPercentageChange | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.Database.DBSizePercentageChangeMonitor" Accessibility="Public" Enabled="false" Target="SQL2016Core!Microsoft.SQLServer.2016.Database" ParentMonitorID="Microsoft.SQLServer.2016.Database.DBSpaceMonitor" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.DBPercentageChange" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.Database.DBSizePercentageChangeMonitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Success"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ConnectionString>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.ServerRole"]/InstanceName$</SqlInstanceName>
<ObjectName>SQL Database</ObjectName>
<CounterName>DB Available Space Total (%)</CounterName>
<InstanceName/>
<DatabaseName>$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$</DatabaseName>
<Value>$Data/Property[@Name='DBFreeSpacePercent']$</Value>
<Threshold1>25</Threshold1>
<Threshold2>45</Threshold2>
<NumSamples>5</NumSamples>
<TimeoutSeconds>300</TimeoutSeconds>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
</Configuration>
</UnitMonitor>