Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Форумчане, подскажите есть ли возможность сделать автовключение Jobs в случае миграции группы доступности на другой сервер и выключения на старом? |
13 мар 18, 06:02 [21251551] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
Den_KP, Зачем? Если Job должен выполняться всегда на Primary для этого есть функция sys.fn_hadr_is_primary_replica. Делаете проверки и если это не Primary то просто ничего не выполняете. |
13 мар 18, 06:43 [21251561] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Еще вопрос от падавана, как я могу сделать проверку для Джоба? Ни разу еще не сталкивался... |
13 мар 18, 11:02 [21252143] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
Den_KP,If sys.fn_hadr_is_primary_replica ( @dbname ) <> 1 BEGIN -- If this is not the primary replica, exit (probably without error). END -- If this is the primary replica, continue to do the backup. или так можно еще if (select ars.role_desc from sys.dm_hadr_availability_replica_states ars inner join sys.availability_groups ag on ars.group_id = ag.group_id where ag.name = 'YourAvailabilityGroupName' and ars.is_local = 1) = 'PRIMARY' begin -- this server is the primary replica, do something here end else begin -- this server is not the primary replica, (optional) do something here end |
13 мар 18, 11:15 [21252204] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Спасибо, я это прочитал, сорри что не конкретизировал. Я это добавляю в Джоб? Мне нужно чтобы 5 Джобов проверяли статус Always On и запускались если Primary. |
13 мар 18, 11:29 [21252261] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8861 |
Сделайте проверку первым шагом, с выкидыванием ошибки в случае секондари реплики. И настройте условия перехода для первого шага При ошибке - завершиться успешно Без ошибки - перейти на следующий шаг |
||
13 мар 18, 12:52 [21252514] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Точно! Спасибо, проверю отпишусь! |
13 мар 18, 13:20 [21252582] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Спасибо за помощь! Реализовал, сделал первым шагом в каждом задании проверку: IF (SELECT ars.role_desc FROM sys.dm_hadr_availability_replica_states ars INNER JOIN sys.availability_groups ag ON ars.group_id = ag.group_id AND ars.is_local = 1) <> 'PRIMARY' BEGIN --We're on the secondary node, throw an error THROW 50001, 'Unable to execute job on secondary node',1 END При Success на следующий шаг идет При Fail пока сделал Alert после чтобы не срал по почте, поменяю на Success при ошибке |
14 мар 18, 07:58 [21254205] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
Еще возник вопрос, когда начал делать на сервере с несколькими группами доступности вышла ошибка: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. |
14 мар 18, 08:23 [21254222] Ответить | Цитировать Сообщить модератору |
aleksrov Member Откуда: Сообщений: 948 |
Den_KP, Разумеется ошибка если у вас их несколько. Отфильтруйте по нужной как в примере выше. |
14 мар 18, 08:53 [21254256] Ответить | Цитировать Сообщить модератору |
Den_KP Member Откуда: Планета Земля, Евразийский материк Сообщений: 214 |
aleksrov, сделал, и уже потом прочитал, добавил фильтр как выше по имени группы |
14 мар 18, 09:23 [21254311] Ответить | Цитировать Сообщить модератору |
AndrF Member Откуда: Сообщений: 2194 |
Кстати, выражение sys.fn_hadr_is_primary_replica ( @dbname ) означает что разные базы в пределах одной и той же группы достуступа могут быть одновременно Primary и Secondary? Иначе зачем аргумент в виде имени базы? |
19 мар 18, 17:04 [21268969] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8861 |
Почему одной группы? На одном инстансе может быть более одной группы доступности. А параметр @dbname просто удобнее чем @agname. |
||
19 мар 18, 17:15 [21269028] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6802 |
если смотреть на dmv этой функции, то
|
||||
19 мар 18, 17:15 [21269029] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |