此監視器會偵測記錄傳送目的地何時未在記錄傳送組態所定義的臨界值內還原記錄。
此監視器會偵測記錄傳送目的地何時未在記錄傳送組態所定義的臨界值內還原記錄。當發生這種情況時,監視器會變成錯誤 (紅色) 狀態。一旦記錄還原繼續,並在定義的臨界值內進行,則監視將回到成功 (綠色) 狀態。依預設,此監視處於錯誤狀態時會產生警示。
記錄傳送不同步,超過還原臨界值。還原臨界值是指產生訊息之前,還原作業之間經歷的分鐘數。
若要疑難排解此問題:
請確定次要伺服器執行個體正在執行 SQL Server Agent 服務、此次要資料庫的還原作業已啟用,並且會依照排程以適當的頻率執行。
次要伺服器上的還原作業可能會失敗。在此情況下,請檢查還原作業的作業記錄以找出原因。
次要伺服器執行個體上執行的記錄傳送還原作業,可能無法連接到監視伺服器執行個體以更新 log_shipping_monitor_secondary 資料表。這可能是監視伺服器執行個體與次要伺服器執行個體之間的驗證問題所引起的。
備份警示臨界值的值可能不正確。這個值最好是設定為還原作業頻率的三倍以上。如果您在設定並執行記錄傳送之後變更還原作業的頻率,則必須跟著更新備份警示臨界值的值。
當監視伺服器執行個體離線之後又再度連線時,log_shipping_monitor_secondary 資料表會在警示訊息作業執行之後才更新為最新的值。若還原作業成功但顯示「找不到可套用至次要資料庫的記錄備份檔案」,可能會發生錯誤 14421。發生此錯誤時,還原時間便不會更新。這個情況的錯誤原因可能是複製作業發生問題。
若要以次要資料庫的最新資料更新監視資料表,請在次要伺服器執行個體上執行 sp_refresh_log_shipping_monitor。
次要或監視伺服器執行個體上的日期或時間不正確。這可能也會產生警示訊息。可能是其中一個執行個體上的系統日期或時間經過修改所引起的。
注意:兩個伺服器執行個體的時區不同應該不會造成問題。
《SQL Server 2012 線上叢書》的<記錄傳送>主題:
Target | Microsoft.SQLServer.2012.Database | ||
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.Windows.2SingleEventLog2StateMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2012.Database.LogShippingDestinationMonitor" Accessibility="Public" Enabled="true" Target="SQL2012Core!Microsoft.SQLServer.2012.Database" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.2SingleEventLog2StateMonitorType" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2012.Database.LogShippingDestinationMonitor.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="DestOutOfSync" MonitorTypeStateID="FirstEventRaised" HealthState="Error"/>
<OperationalState ID="DestInSync" MonitorTypeStateID="SecondEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</FirstComputerName>
<FirstLogName>Application</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">14421</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>.$Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$ </Pattern>
</RegExExpression>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>$Target/Host/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</SecondComputerName>
<SecondLogName>Application</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">18268</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>: $Target/Property[Type="SQL!Microsoft.SQLServer.Database"]/DatabaseName$,</Pattern>
</RegExExpression>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>