DR
Como permitir acesso somente leitura a alguns usuários em uma réplica (em um grupo de disponibilidade do Sql Server), somente quando a réplica for secundária , e negá-la quando se tornar primária ?
Explicação
Estou pensando em uma configuração de grupo de disponibilidade, onde haverá duas réplicas, uma delas legível quando for secundária. Os aplicativos de leitura não essenciais (como BI e outros) conectam-se ao secundário; eles causam uma carga considerável nessa réplica; há muitos recursos não utilizados (já que é uma réplica secundária), então não se preocupe.
Agora, o primário falha e o secundário se torna o primário; a carga de leitura não é desejada, pois afetará cargas de missão crítica (que são transferidas para o novo primário). Podemos tolerar interrupções em leitores que não sejam de missão crítica, por isso desejamos que seus respectivos usuários sejam desativados e expulsos até que a réplica se torne secundária novamente.
Como isso seria possível?
Esta não é a maneira correta de mover o tráfego somente leitura quando uma réplica muda de função de Secundária para Primária. Desabilitar o acesso do usuário sempre que uma função de réplica é alterada precisa de uma solução personalizada. Sugiro que você use a solução integrada da Microsoft, que mencionei abaixo.
O roteamento somente leitura está disponível no SQL Server 2016 (13.x) e versões posteriores. Antes de configurar o roteamento somente leitura, certifique-se de ter os Pré-requisitos . Aqui está a documentação para configurar o roteamento somente leitura para um grupo de disponibilidade .
Você deverá decidir o que fazer com o tráfego somente leitura se nenhuma das réplicas secundárias estiver disponível. Você pode enviar esse tráfego para o primário (você inclui o primário na read_only_routing_list) ou esperar até que pelo menos um dos secundários esteja disponível.
Algumas outras considerações antes de planejar descarregar a carga de trabalho somente leitura para a réplica secundária de um grupo de disponibilidade Always On