DB ファイル空き領域

Microsoft.SQLServer.2008.Monitoring.DBFileSpaceMonitor (UnitMonitor)

データベース ファイルと、データベース ファイルをホストしているメディアで、利用可能な空き領域の割合を監視します。

Knowledge Base article:

概要

ファイル、およびファイルをホストしているメディアで利用可能な空き領域を監視します。ファイルをホストしているメディアで使用可能な領域は、このファイルで自動拡張が有効になっている場合にのみ使用可能な領域の一部に含まれます。

原因

異常な状態になるのは、このファイルで空き領域が不足しているためです。空き領域が不足している原因として、次のことが考えらます。

パフォーマンス データを表示するには、次のリンクを使用してください: DB ファイルの空き領域のパフォーマンス データ

自動拡張なし

自動拡張のないファイルの場合、空き領域はファイルの初期サイズと使用済み領域の差になります。

自動拡張有効

自動拡大が有効な場合、使用可能なディスク領域は、空き領域の一部として組み込まれます。ファイル サイズと使用領域の間の差だけでなく、最大サイズとファイル サイズの差またはディスクの空き領域のどちらか小さい方が、自動拡張が有効になっているファイルの空き領域になります。

自動拡張するデータベース ファイルの空き領域が低下しているということは、ファイルがホストしている論理ドライブの制限に近づいている可能性があります。最大サイズを指定して自動拡張が有効にされているファイルの場合、空き領域が低下しているということは、ファイルが指定されている最大サイズに近づいていることも考えられます。

空き領域の計算では、ファイルの拡張量がディスクの残り領域よりも大きい場合にファイルが拡張できない可能性や、最大サイズと現在のファイル サイズの差が拡張領域よりも小さい場合にファイルが拡張できない可能性についても考慮します。これらの状況では、ファイルをこれ以上拡張できないため、ディスクに残っている使用可能な空き領域は空き領域の一部に含まれません。

解決方法

この問題は、次のいずれかの方法で解決できる場合があります。

詳細については、SQL Server オンライン ブックの「 ファイルとファイル グループのアーキテクチャ」を参照してください。

上書き可能なパラメーター

名前

説明

既定値

有効

ワークフローを有効または無効にします。

はい

アラートの生成

ワークフローがアラートを生成するかどうかを定義します。

いいえ

間隔 (秒)

ワークフローを実行する定期的な実行間隔 (秒)。

900

下限しきい値

このモニターの下限しきい値。

10

同期時刻

24 時間形式で指定した同期時刻。省略可能です。

 

タイムアウト (秒)

ワークフローが終了して失敗とマークされるまでの、ワークフローの許容実行時間を指定します。

300

上限しきい値

このモニターの上限しきい値。

20

Element properties:

TargetMicrosoft.SQLServer.2008.DBFile
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.2008.DBFileSizeMonitorType
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.2008.Monitoring.DBFileSpaceMonitor" Accessibility="Public" Enabled="true" Target="SQL2008Core!Microsoft.SQLServer.2008.DBFile" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2008.DBFileSizeMonitorType" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<OperationalStates>
<OperationalState ID="UnderThreshold1" MonitorTypeStateID="UnderThreshold1" HealthState="Error"/>
<OperationalState ID="OverThreshold1UnderThreshold2" MonitorTypeStateID="OverThreshold1UnderThreshold2" HealthState="Warning"/>
<OperationalState ID="OverThreshold2" MonitorTypeStateID="OverThreshold2" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
<ConnectionString>$Target/Host/Host/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ConnectionString$</ConnectionString>
<ServerName>$Target/Host/Host/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ServerName>
<SqlInstanceName>$Target/Host/Host/Host/Property[Type="SQL!Microsoft.SQLServer.ServerRole"]/InstanceName$</SqlInstanceName>
<ObjectName>$Target/Host/Host/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/PerformanceCounterObject$ : Database : DB File</ObjectName>
<CounterName>DB File Free Space (%)</CounterName>
<InstanceName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBFile"]/FileName$</InstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$</DatabaseName>
<DBFileId>$Target/Property[Type="SQL!Microsoft.SQLServer.DBFile"]/FileID$</DBFileId>
<Value>$Data/Property[@Name='FreeSpacePercent']$</Value>
<Threshold1>10</Threshold1>
<Threshold2>20</Threshold2>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>