Вы можете проверить так:
1. Проверить статус группы доступности:
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 = 'AvailabilityGroupName'
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
* Не забудьте изменить AvailabilityGroupName
или
2. запретить выполнение задания на вторичном:
IF master.dbo.svf_AgReplicaState('AvailabilityGroupName')=0 raiserror ('This is not the primary replica.',2,1)
или
3. проверить наличие записи на вторичном:
IF (SELECT CONVERT(sysname,DatabasePropertyEx(DB_NAME(),'Updateability'))) != 'READ_ONLY'
BEGIN
-- this server is the primary replica, do something here
END
или
4. для SQL2014 и новее:
IF master.dbo.fn_hadr_database_is_primary_replica('Admin') = 1
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