Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Из жизни репликаций - Аварийный останов merge agenta  [new]
Vakho
Member

Откуда: ---------
Сообщений: 426
WINDOWS 2003 Server Enterprise Edition SP1
MS SQL SERVER 2000 SP4
Репликация слиянием, PUSH подписка.
Репликация осуществляется через ИНТЕРНЕТ между семью серверами,
шесть из которых - подписчики.
Агенты подписчиков работают на публикаторе-дистрибуторе.

Всем шести агенам в свойствах
Agent Properties / Steps / Run Agent / Edit... / Advanced
установлено Retry Attempts = 1440 min
Когда сервера-подписчики включаются персоналом или включается ВНЕЗАПНО выключившийся ИНТЕРНЕТ, агенты подхватываются и начинают свою работу. Нет
необходимости в "часовом", который будет вручную стартовать агентов.

Пять подписчиков работают нормально.
Благостную картину портит шестой подписчик, чей агент часто останавливается (на дню
несколько раз) .
Основное объяснение: "The process could not query row metadata at the 'Subscriber'."
Далее по категориям
- Agent - Merge Replication Provider - "The process could not query row metadata at the 'Subscriber'".
- Data Source - WINSERVER5 - "General network error. Check your network documentation."
- Agent - Merge Process - "The merge process encountered an unexpected network error.
The connection to Subscriber 'WINSERVER5' is no longer available."

Делаю вручную Start Agent. Начинает работать. Может проработать несколько часов и опять остановиться.
В процессе работы агент может отработать несколько сбоев:
"The subscription to publication 'Cards_Pub' is invalid."
Через минуту агент делает попытку и ... продолжает работать,
"subscription to publication" уже не "инвалид".

См. картинку

Понятно, что надо разобраться с сетью на объекте, где работает проблемный подписчик.
Но хотелось бы знать место или способ, при помощи которого можно автоматом запускать
остановившегося агента подписчика. Это необходимо для других подписчиков. Там останов
агента случается, но чрезвычайно редко, примерно раз-два в месяц.
Уже таймауты менял, уже вандальским способом пробовал (зацикливал JOB)...

Спасибо зараннее за совет.

К сообщению приложен файл. Размер - 22Kb
17 ноя 13, 19:54    [15144505]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
invm
Member

Откуда: Москва
Сообщений: 9835
Так необходима работа мерж-агентов в непрерывном режиме?
17 ноя 13, 21:12    [15144736]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
Vakho
Member

Откуда: ---------
Сообщений: 426
invm
Так необходима работа мерж-агентов в непрерывном режиме?

Да. И все они так и настроены.
17 ноя 13, 21:13    [15144741]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
invm
Member

Откуда: Москва
Сообщений: 9835
Vakho
Да. И все они так и настроены.
Тогда придется написать следящий джоб, который будет перезапускать упавших мерж-агентов.
17 ноя 13, 21:29    [15144800]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
Vakho
Member

Откуда: ---------
Сообщений: 426
invm
Тогда придется написать следящий джоб, который будет перезапускать упавших мерж-агентов.

Я думал об этом, но, честно говоря, не представляю себе, как это сделать.
Например, за чем конкретно надо приглядывать, чтобы определить останов агента ?
Какие шаги надо выполнить, чтобы запустить агента ?
Срасибо, если подскажете.
17 ноя 13, 21:44    [15144840]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
invm
Member

Откуда: Москва
Сообщений: 9835
Примерно вот так можно определить идентификаторы заданий мерж-агентов, выполнявшихся в непрерывном режиме и завершивших свое выполнение с ошибкой:
select
 ma.job_id
from
 distribution..MSmerge_agents ma join
 msdb..sysjobactivity sja on sja.job_id = ma.job_id join
 msdb..sysjobhistory sjh on sjh.instance_id = sja.job_history_id
where
 sjh.run_status = 0/*Error*/ and
 exists(
  select
   *
  from
   msdb..sysjobschedules sjs join
   msdb..sysschedules sch on sch.schedule_id = sjs.schedule_id
  where
   sjs.job_id = ma.job_id and
   sch.freq_type = 64/*Runs when the SQL Server Agent service starts*/
 )
17 ноя 13, 22:52    [15145091]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
invm
Member

Откуда: Москва
Сообщений: 9835
А можно через алерт на "Replication: agent failure"
17 ноя 13, 23:23    [15145244]     Ответить | Цитировать Сообщить модератору
 Re: Из жизни репликаций - Аварийный останов merge agenta  [new]
Vakho
Member

Откуда: ---------
Сообщений: 426
Ну, вобщем поступил я следующим образом:
- Agent Properties / Steps / Detect non logged agent shutdown. / Edit... / Advanced;
- On success action: Goto step: [1] Merge agent startup message;
- On failure action: Goto step: [1] Merge agent startup message.

Наверно это не элегантное решение, но что придумал, то придумал.
Агентура пока от сбоев отстреливается, ожидая подмоги в форме решения проблемы с отказами в сети.
19 ноя 13, 12:10    [15153579]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить