此監視器會查看 Microsoft SQL Server 所回報的資料庫狀態。
此監視器會檢查 Microsoft SQL Server 所報告的資料庫狀態。其檢查方式是對 SQL 執行個體的 master 資料庫執行查詢,並傳回該資料庫的狀態。如果您接收到此監視的警示,則須採取行動才能使資料庫回復運作狀態。
「狀況不良」狀態表示目前無法使用 SQL Server 資料庫。除了「線上」狀態之外的所有狀態都會導致狀況不良狀態。可能的狀態詳列如下:
SQL 資料庫狀態 | 描述 | 健全狀況狀態 |
線上 | 資料庫可供存取。雖然可能尚未完成復原的恢復階段,但主要檔案群組目前處於上線中。 | 狀況良好 |
離線 | 資料庫是無法使用的。明確的使用者動作可使資料庫變成離線狀態,並且在採取其他的使用者動作之前都是離線狀態。例如,可以將資料庫設成離線,好讓檔案移到新的磁碟中。在完成移動後,就會將資料庫重新啟動為線上狀態。 | 重大 |
RECOVERY PENDING | SQL Server 在復原期間發生與資源相關的錯誤。資料庫並未損毀,但是可能遺失檔案或可能因系統資源限制而造成其無法啟動。資料庫無法使用。使用者須採取其他動作才能解決此錯誤,並完成復原程序。 | 重大 |
SUSPECT | 至少主要檔案群組有問題,而且有可能已損毀。在啟動 SQL Server 期間無法復原資料庫。無法使用該資料庫。使用者需要執行其他動作,才可解決此問題。 | 重大 |
緊急 | 使用者已變更資料庫並將狀態設為 EMERGENCY。資料庫為單一使用者模式,且可修復或還原。資料庫標示為 READ_ONLY、記錄已停用,並僅限系統管理員固定伺服器角色的成員才可存取。EMERGENCY 主要用於進行疑難排解。例如,標示為有疑問的資料庫就可設為 EMERGENCY 狀態。這可允許系統管理員唯讀存取資料庫。只有系統管理員固定伺服器角色的成員才能將資料庫設為 EMERGENCY 狀態。 | 重大 |
RESTORING | 正於離線狀態下還原主要檔案群組的一或多個檔案,或還原一或多個次要檔案。資料庫目前無法使用。 | 重大 |
RECOVERING | 資料庫恢復中。恢復程序是暫時性的狀態;如果恢復成功,資料庫就會自動變成線上狀態。如果恢復失敗,資料庫就會變成有疑問的狀態。資料庫是無法使用的。 | 警告 |
若要尋找針對資料庫所報告的確切狀態,請檢查狀態變更或警示的內容。
您可以嘗試使資料庫重回線上狀態來解決問題。
請參閱 SQL Server 的詳細資訊,位置如下:
https://msdn.microsoft.com/zh-tw/library/microsoft.sqlserver.management.smo.database.status.aspx
名稱 | 描述 | 預設值 |
警示優先順序 | 定義警示優先順序。 | 標準 |
警示嚴重性 | 定義警示嚴重性。 | 錯誤 |
已啟用 | 啟用或停用該工作流程。 | 是 |
產生警示 | 定義工作流程是否要產生警示。 | 是 |
間隔 (秒) | 每次重複執行工作流程之間的時間間隔 (秒)。 | 300 |
同步處理時間 | 同步處理時間使用 24 小時制。可予省略。 |
|
逾時 (秒) | 指定流程被關閉及標示為失敗之前,允許執行的時間。 | 200 |
資料庫連線的逾時 (秒) | 若工作流程無法在指定的期限之內存取資料庫,將會失敗並登錄一則事件。 | 15 |
Target | Microsoft.SQLServer.Windows.Database | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | AvailabilityHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.Windows.MonitorType.Database.DBStatus | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Database.DBStatus" Accessibility="Public" Enabled="true" Target="SqlDiscW!Microsoft.SQLServer.Windows.Database" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Database.DBStatus" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Database.DBStatus.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Good" MonitorTypeStateID="Good" HealthState="Success"/>
<OperationalState ID="Bad" MonitorTypeStateID="Bad" HealthState="Error"/>
<OperationalState ID="NeitherGoodNorBad" MonitorTypeStateID="NeitherGoodNorBad" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>