資料庫檔案空間

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>