Использование предупреждений для событий агента репликации
Применимо к:SQL Server Управляемый экземпляр SQL Azure
SQL Server Management Studio и Microsoft агент SQL Server предоставляют способ мониторинга событий, таких как события агента реплика tion, с помощью оповещений. агент SQL Server отслеживает журнал приложений Windows для событий, связанных с оповещениями. Если такое событие происходит, агент SQL Server автоматически реагирует, выполняя определенную задачу и (или) отправляя сообщение электронной почты или сообщение пейджера указанному оператору. SQL Server включает набор предопределенных оповещений для агентов реплика tion, которые можно настроить для выполнения задачи и (или) уведомить оператора. Дополнительные сведения об определении выполняемых задач см. в подразделе «Автоматизация отклика на предупреждение» этого раздела.
При настройке компьютера в качестве распространителя производится установка следующих предупреждений.
Идентификатор сообщения | Стандартное предупреждение | Условие, вызывающее предупреждение | Наличие дополнительных сведений в msdb..sysreplicationalerts |
---|---|---|---|
14150 | Репликация: успех агента | Успешное завершение работы агента. | Да |
14151 | Репликация: неудача агента | Работа агента завершена с ошибкой. | Да |
14152 | Репликация: повторная попытка агента | Агент завершает работу после неудачной повторной попытки выполнения операции (агент обнаружил ошибку: например, сервер недоступен, взаимоблокировка, сбой подключения, ошибка времени ожидания). | Да |
14157 | Репликация: истекшая подписка удалена | Подписка с истекшим сроком удалена. | No |
20572 | Репликация: подписка повторно инициализирована после ошибки проверки достоверности | Повторная инициализация подписки с помощью ответного задания «Повторная инициализация подписки при ошибке проверки данных» выполнена успешно. | No |
20574 | Репликация: ошибка проверки данных подписчиком | Ошибка проверки данных агентом распространителя или агентом слияния. | Да |
20575 | Репликация: прошла проверку данных подписчиком | Проверка данных агентом распространителя или агентом слияния проведена успешно. | Да |
20578 | Репликация: нестандартное завершение работы агента | Когда проверка данных вызывается через sp_publication_validation и @shutdown_agent имеет 1 значение , агент распространителя завершает работу после завершения проверки. |
Да |
22815 | Предупреждение об обнаружении конфликта в одноранговой топологии | Агент распространителя обнаружил конфликт при попытке применения изменений на одноранговом узле. | Да |
Наряду с этими предупреждениями монитор репликации предоставляет набор предупреждений и оповещений, относящихся к состоянию и производительности. Дополнительные сведения см. в статье Set Thresholds and Warnings in Replication Monitor. Вы также можете определить оповещения для других событий реплика tion с помощью инфраструктуры оповещений SQL Server. Дополнительные сведения см. в статье Создание пользовательского события.
Настройка стандартных предупреждений репликации
- SQL Server Management Studio: настройка предопределенных оповещений репликации (SQL Server Management Studio)
Непосредственный просмотр журнала приложений
Чтобы просмотреть журнал приложений Windows, используйте Просмотр событий Microsoft Windows. Журнал приложений содержит сообщения об ошибках SQL Server, а также сообщения для многих других действий на компьютере. В отличие от журнала ошибок SQL Server, новый журнал приложений не создается каждый раз при запуске SQL Server (каждый сеанс SQL Server записывает новые события в существующий журнал приложений); однако можно указать, сколько времени будут храниться регистрированные события. При просмотре журнала приложений Windows можно отфильтровать журнал для поиска определенных событий. Дополнительные сведения см. в документации по Windows.
Автоматизация отклика на предупреждения
Репликация обеспечивает выполнение ответного задания для подписок, которые не прошли проверку данных, а также предоставляет платформу для создания дополнительных автоматизированных ответов на предупреждения. Задание ответа называется "Повторно инициализировать подписки на сбой проверки данных" и хранится в папке заданий агент SQL Server в SQL Server Management Studio. Сведения о включении этого задания ответа см. в разделе "Настройка предопределенных оповещений репликации" (SQL Server Management Studio). Если статьи в публикации транзакций не проходят проверку, ответное задание проводит повторную инициализацию только тех статей, которые не прошли проверку. Если статьи в публикации слиянием не проходят проверку, ответное задание повторно инициализирует все статьи публикации.
Платформа для автоматизации ответов
Обычно при возникновении предупреждения информация, позволяющая понять причину появления предупреждения и предпринять необходимые действия, содержится исключительно в самом предупреждающем сообщении. Анализ этой информации подвержен ошибкам и занимает немало времени. Репликация облегчает автоматическое реагирование, предоставляя дополнительную информацию о предупреждении в системной таблице sysreplicationalerts ; эта информация уже представлена в форме, которая может быть легко использована пользовательскими программами.
Например, если данные в таблице Sales.SalesOrderHeader на подписчике A завершается ошибкой проверки, SQL Server может активировать сообщение 20574, уведомляя вас об этом сбое. Выводится следующее сообщение: «Ошибка проверки данных подписки подписчика A на статью SalesOrderHeader в публикации MyPublication».
Если ответ создается на основе этого сообщения, необходимо вручную выделить из сообщения имя подписчика, имя статьи, имя публикации и ошибку. Однако поскольку агент распространителя и агент слияния записывают ту же информацию в таблицу sysreplicationalerts (вместе с подробными сведениями, такими как тип агента, время вывода предупреждения, база данных публикации, база данных подписчика и тип публикации), ответное задание может запросить соответствующую информацию непосредственно из таблицы. Хотя конкретную строку нельзя связать с определенным экземпляром предупреждения, в таблице имеется столбец status , который можно использовать для отслеживания тех записей, которые были обработаны. Записи этой таблицы сохраняются в течение срока хранения журнала.
Например, если вы создали задание ответа в Transact-SQL, которое обслуживает сообщение 20574, можно использовать следующую логику:
declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber,
subscriber_db, alert_id from
msdb..sysreplicationalerts where
alert_error_code = 20574 and status = 0
for read only
open hc
fetch hc into @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id
while (@@fetch_status <> -1)
begin
/* Do custom work */
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id
fetch hc into @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id
end
close hc
deallocate hc
См. также
Администрирование агента репликации
Best Practices for Replication Administration
Мониторинг (репликация)
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по