Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
SQL Server Management Studio и Microsoft SQL Server Agent предоставляют способ мониторинга событий, таких как события агента репликации, с помощью оповещений. Агент SQL Server отслеживает журнал приложений Windows для событий, связанных с оповещениями. При возникновении такого события агент SQL Server реагирует автоматически, выполняя задачу, определенную вами и (или) отправляя сообщение электронной почты или сообщение пейджера указанному оператору. SQL Server включает набор предопределенных оповещений для агентов репликации, которые можно настроить для выполнения задачи и (или) уведомить оператора. Дополнительные сведения об определении выполняемой задачи см. в разделе "Автоматизация ответа на оповещение" в этом разделе.
При настройке компьютера в качестве распространителя устанавливаются следующие оповещения:
| Идентификатор сообщения | Предопределенное оповещение | Условие, вызывающее срабатывание оповещения | Вводятся дополнительные сведения в msdb..sysreplicationalerts |
|---|---|---|---|
| 14150 | Репликация: успешность агента | Агент успешно завершает работу. | Да |
| 14151 | Репликация: сбой агента | Агент завершает работу с ошибкой. | Да |
| 14152 | Репликация: повторная попытка агента | Агент завершает работу после неудачной повторной попытки операции (агент сталкивается с ошибкой, такой как сервер недоступен, взаимоблокировка, сбой подключения или сбой времени ожидания). | Да |
| 14157 | Репликация: истекший срок действия подписки удален | Истекший срок действия подписки был удален. | нет |
| 20572 | Репликация: повторная инициализация подписки после сбоя проверки | Задание ответа "Повторно инициализировать подписки при сбое проверки данных" успешно повторно инициализирует подписку. | нет |
| 20574 | Репликация: сбой проверки данных подписчика | Агент распространения или слияния не проходит проверку данных. | Да |
| 20575 | Репликация: подписчик прошел проверку данных | Агент распространения или слияния проходит проверку данных. | Да |
| 20578 | Репликация: пользовательская настройка завершения агента | ||
| 22815 | Оповещение об обнаружении одноранговых конфликтов | Агент распространения обнаружил конфликт, пытаясь применить изменение к одноранговому узлу. | Да |
Помимо этих оповещений монитор репликации предоставляет набор предупреждений и оповещений, связанных с состоянием и производительностью. Дополнительные сведения см. в Настройке пороговых значений и предупреждений в инфраструктуре оповещений монитора репликации. Дополнительные сведения см. в разделе "Создание события User-Defined".
Настройка предопределенных оповещений репликации
- 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 (а также сведения о типе агента, времени оповещения, базе данных публикации, базе данных подписчика и типе публикации) задание ответа может напрямую запрашивать соответствующие сведения из таблицы. Хотя точную строку нельзя связать с определенным экземпляром оповещения, в таблице есть столбец состояния , который можно использовать для отслеживания обслуживаемых записей. Записи в этой таблице сохраняются в течение периода хранения истории.
Например, если бы вы должны были создать задание на ответ в 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
См. также
Администрирование агента репликации
Рекомендации по администрированию репликации
Мониторинг (репликация)