Temos um grupo de disponibilidade Always On com um primário e um secundário habilitado para leitura. Temos um usuário da equipe de implementação que usa o banco de dados para verificar a correção dos dados que eles pretendem colocar no banco de dados.
Os usuários têm apenas direitos de leitura no banco de dados, mas quando se conectam (através do SSMS) através do Ouvinte AG, sempre se conectam ao nó ativo.
Eu tentei fazê-los acessar a instância somente leitura diretamente, mas eles estão presos em seus caminhos e depois de um dia ou dois, eles estão novamente no nó ativo.
Existe uma maneira do SQL Server dizer que esse usuário sempre estará com intenção somente leitura e redirecioná-lo para lá?
NOTA: Tentei definir 'ApplicationIntent = ReadOnly' nos parâmetros de conexão adicionais, mas isso não parece redirecionar para o nó secundário e não é a solução ideal, pois eles inevitavelmente esquecerão de configurá-lo para novos iniciantes.
SQL Server 2012 Enterprise, Grupo de disponibilidade 1 primário, 1 secundário legível com confirmação síncrona.
Não pretendo que um usuário se conecte a um servidor vinculado ou através de qualquer outro servidor. Os usuários se conectam diretamente ao banco de dados através do SSMS (nenhum outro aplicativo) e eu gostaria que o AG Listener (ou algo por aí) pudesse direcionar esse usuário para um nó secundário, se um estivesse disponível (pois ele só tem acesso de leitura lá não faz sentido acessar o primário) sem que o usuário precise fazer nada, pois ele se move pelas máquinas e esquece de adicionar a intenção do aplicativo. Também acho que adicionar isso aos parâmetros de conexão adicionais nem sempre o direciona para o nó secundário.
Respostas:
Não tenho uma resposta para toda a sua pergunta (embora eu tenha respondido a uma pergunta semelhante hoje https://dba.stackexchange.com/a/137844/36812 ), mas você mencionou que usar ApplicationIntent = ReadOnly não funciona devidamente.
Você configurou URLs de roteamento somente leitura? Como não é feito imediatamente e, se você não o fizer, essas configurações e esse sinalizador não funcionarão. Eu acho que se você conseguir isso, poderá começar a reavaliar seus requisitos.
Instruções no MSDN https://msdn.microsoft.com/en-us/library/hh710054.aspx e mais facilmente executadas no PowerShell.
fonte
Ste, o que você quer é um ponto e clique em solução ou configuração em algum lugar. Infelizmente, atualmente nenhum deles existe no formato "pronto para uso". Seria muito bom se a Microsoft incluísse isso nas configurações de conexão de um Servidor Registrado para que ele pudesse ser salvo, mas infelizmente não.
Isso deixa você com uma das duas opções:
Encontrei um download da Microsoft para o SNAC - SQL Native Access Client, procurando algo que pudesse atender aos seus requisitos. Isso permitiria que você escrevesse um pequeno pedaço de código para fornecer aos usuários um botão para acessar diretamente o secundário Somente Leitura. https://blogs.msdn.microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/
A outra possibilidade é forçar os usuários a preencher o diálogo de parâmetros de conexão ao se conectar através do SSMS. Para forçar esse comportamento, você precisará modificar os logons nos servidores primário e secundário, negando a conexão com o primário e permitindo a conexão com os secundários. Você pode usar um trabalho do SQL Agent para verificar o status do servidor e definir logins adequadamente.
É certo que não tentei fazer o último, mas, em teoria, deveria funcionar.
fonte
Parece que agora é um recurso do SQL Server 2019.
Do redirecionamento de conexão de leitura / gravação da réplica secundária para a primária (Grupos de Disponibilidade AlwaysOn) na documentação oficial:
fonte