Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Форумчане, подскажите есть ли возможность сделать автовключение Jobs в случае миграции группы доступности на другой сервер и выключения на старом?
13 мар 18, 06:02    [21251551]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Den_KP,

Зачем? Если Job должен выполняться всегда на Primary для этого есть функция sys.fn_hadr_is_primary_replica. Делаете проверки и если это не Primary то просто ничего не выполняете.
13 мар 18, 06:43    [21251561]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Еще вопрос от падавана, как я могу сделать проверку для Джоба? Ни разу еще не сталкивался...
13 мар 18, 11:02    [21252143]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
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]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Спасибо, я это прочитал, сорри что не конкретизировал. Я это добавляю в Джоб? Мне нужно чтобы 5 Джобов проверяли статус Always On и запускались если Primary.
13 мар 18, 11:29    [21252261]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
msLex
Member

Откуда:
Сообщений: 7988
Den_KP
Спасибо, я это прочитал, сорри что не конкретизировал. Я это добавляю в Джоб? Мне нужно чтобы 5 Джобов проверяли статус Always On и запускались если Primary.

Сделайте проверку первым шагом, с выкидыванием ошибки в случае секондари реплики.
И настройте условия перехода для первого шага
При ошибке - завершиться успешно
Без ошибки - перейти на следующий шаг
13 мар 18, 12:52    [21252514]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Точно! Спасибо, проверю отпишусь!
13 мар 18, 13:20    [21252582]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Спасибо за помощь!
Реализовал, сделал первым шагом в каждом задании проверку:

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]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
Еще возник вопрос, когда начал делать на сервере с несколькими группами доступности вышла ошибка:

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]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
aleksrov
Member

Откуда:
Сообщений: 948
Den_KP,

Разумеется ошибка если у вас их несколько. Отфильтруйте по нужной как в примере выше.
14 мар 18, 08:53    [21254256]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
Den_KP
Member

Откуда:
Сообщений: 211
aleksrov, сделал, и уже потом прочитал, добавил фильтр как выше по имени группы
14 мар 18, 09:23    [21254311]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
AndrF
Member

Откуда:
Сообщений: 2194
Кстати, выражение sys.fn_hadr_is_primary_replica ( @dbname ) означает что разные базы в пределах одной и той же группы достуступа могут быть одновременно Primary и Secondary? Иначе зачем аргумент в виде имени базы?
19 мар 18, 17:04    [21268969]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
msLex
Member

Откуда:
Сообщений: 7988
AndrF
Кстати, выражение sys.fn_hadr_is_primary_replica ( @dbname ) означает что разные базы в пределах одной и той же группы достуступа могут быть одновременно Primary и Secondary? Иначе зачем аргумент в виде имени базы?

Почему одной группы?
На одном инстансе может быть более одной группы доступности.
А параметр @dbname просто удобнее чем @agname.
19 мар 18, 17:15    [21269028]     Ответить | Цитировать Сообщить модератору
 Re: Переключение Jobs в Always On  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
AndrF
Кстати, выражение sys.fn_hadr_is_primary_replica ( @dbname ) означает что разные базы в пределах одной и той же группы достуступа могут быть одновременно Primary и Secondary? Иначе зачем аргумент в виде имени базы?

если смотреть на dmv этой функции, то

автор
On a secondary replica, this view returns a row for every secondary database on the server instance. On the primary replica, this view returns a row for each primary database and an additional row for the corresponding secondary database.
19 мар 18, 17:15    [21269029]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить