Ao perguntar quais bancos de dados são graváveis em um determinado servidor, estou usando o snippet abaixo para listar bancos de PRIMARY
dados de réplica e bancos de dados que não participam de um AG.
Agora que implantei um Distributed Availability Group , ele não está funcionando mais! Como o encaminhador local relata como uma PRIMARY
réplica no sys.dm_hadr_availability_replica_states
DMV, minha consulta antiga está me dizendo que um banco de dados é gravável quando não é.
Como altero esta consulta para excluir bancos de dados em uma réplica de encaminhador local ?
select
ars.role_desc
,ag_name = ag.[name]
,adc.[database_name]
from sys.availability_groups ag
join sys.dm_hadr_availability_replica_states ars on ars.group_id = ag.group_id
join sys.availability_databases_cluster adc on adc.group_id = ag.group_id
where ars.is_local = 1
and ars.role_desc = 'PRIMARY'
union all
select
'LOCAL_ONLY'
,@@servername
,[name]
from sys.databases d
where not exists (
select 1
from sys.availability_databases_cluster adc
where adc.[database_name] = d.[name]
);
...ou mais simplesmente...
Como listar todos os bancos de dados de encaminhadores locais?
Para listar todos os bancos de dados em uma réplica do encaminhador no servidor atual...
Para listar todos os bancos de dados que são
PRIMARY
ou apenas locais e excluir os bancos de dados do encaminhador...