Этот монитор определяет, что во временных рамках, заданных в конфигурации доставки журналов, не было выполнено восстановление журнала в месте назначения доставки журналов.
Обратите внимание, что доставка журналов не поддерживается ни в одном из выпусков SQL Server Express.
Этот монитор определяет, когда место назначения журналов не имело восстановленного журнала в объеме, указанном пороговым значением, которое определяется как часть конфигурации доставки журналов. Если это происходит, состояние монитора изменится на критическое. После того как резервное копирование журнала возобновится и находится в пределах установленных значений, монитор вернется к исправному состоянию. По умолчанию этот монитор создает предупреждения, когда он находится в состоянии ошибки.
Доставка журналов не синхронизирована дольше, чем задано порогом восстановления. Порог восстановления определяется как число минут, которое может пройти между операциями восстановления до того, как будет сформировано сообщение.
Чтобы устранить неполадку, выполните следующие действия.:
Удостоверьтесь, что служба агента SQL Server на экземпляре сервера-получателя работает, и что задание восстановления в базе данных-получателе включено и выполняется по расписанию с подходящей частотой.
Возможно, произошла ошибка задания восстановления на сервере-получателе. В этом случае проверьте журнал заданий восстановления, чтобы попытаться найти ошибку.
Заданию восстановления доставки журналов, выполняющемуся на экземпляре сервера-получателя, не удается соединиться с экземпляром сервера мониторинга для обновления таблицы log_shipping_monitor_secondary. Причиной этого может быть проблема проверки подлинности между экземпляром сервера мониторинга и экземпляром сервера-получателя.
Неправильное пороговое значение предупреждения резервного копирования. В идеальном случае это значение должно быть минимум в три раза больше частоты запуска задания восстановления. Если частота запуска задания восстановления изменяется после настройки доставки журналов, когда она уже успешно работает, необходимо соответствующим образом обновить пороговое значение предупреждения резервного копирования.
Когда экземпляр сервера мониторинга переходит в режим "вне сети", а затем снова в режим "в сети", таблица log_shipping_monitor_secondary не обновляется текущими значениями до тех пор, пока не будет выполнено задание предупреждения. Ошибка 14421 может произойти после успешного завершения задания восстановления с сообщением "Не удалось найти файл резервной копии журнала, который можно использовать для базы данных-получателя". В этом случае время восстановления не обновляется. Причиной ошибки в этом случае может быть проблема, связанная с заданием копирования.
Для обновления таблиц мониторинга новейшими данными для базы данных-получателя выполните процедуру sp_refresh_log_shipping_monitor на экземпляре сервера-получателя.
На экземпляре сервера-получателя или сервера мониторинга установлена неправильная дата или время. При этом также могут формироваться предупреждения. Вероятно, была изменена системная дата или время на одном из этих серверов.
Примечание. Разные часовые пояса на двух экземплярах серверов не должны быть причиной проблемы.
Статья о доставке журнала в электронной документации на SQL Server 2016:
http://go.microsoft.com/fwlink/?LinkId=799310
Название | Описание | Значение по умолчанию |
Приоритет предупреждения | Определяет приоритет предупреждения. | Обычные |
Серьезность предупреждения | Определяет серьезность предупреждения. | Ошибка |
Включено | Включает или отключает рабочий процесс. | Да |
Создает предупреждения | Определяет, создает ли рабочий процесс предупреждения. | Да |
Target | Microsoft.SQLServer.2016.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.2016.Database.LogShippingDestinationMonitor" Accessibility="Public" Enabled="true" Target="SQL2016Core!Microsoft.SQLServer.2016.Database" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.2SingleEventLog2StateMonitorType" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.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="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>.$Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.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="SQL2016Core!Microsoft.SQLServer.2016.DBEngine"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery>EventDescription</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>: $Target/Property[Type="SQL2016Core!Microsoft.SQLServer.2016.Database"]/DatabaseName$,</Pattern>
</RegExExpression>
</Expression>
</And>
</SecondExpression>
</Configuration>
</UnitMonitor>