none
AlwaysOn: Acessar servidor secundário para somente leitura RRS feed

  • Pergunta

  •      Boa Tarde colegas, implementei a solução alwayson em dois servidores sql 2012. Testei sincronização e o failover e deu tudo certo. Estou tendo problemas agora na questão da aplicação acessar o servidor somente leitura. Eis o que já fiz e mesmo assim a aplicação continua conectando no servidor primário:

    1)Configurei a opção Read-intent only na opção do grupo.

    2)Coloquei em minha  aplicação a propriedade Application Intent=READONLY

    3)Executei os comandos abaixo para configurações na base master:

       ALTER AVAILABILITY GROUP GRUPO_ALW
    MODIFY REPLICA ON N'SQL2012-01'
    WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N'TCP://SQL2012-01:1433'))

    ALTER AVAILABILITY GROUP GRUPO_ALW
    MODIFY REPLICA ON N'SQL2012-02'
    WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N'TCP://SQL2012-02:1433'))

    ALTER AVAILABILITY GROUP GRUPO_ALW
    MODIFY REPLICA ON N'SQL2012-01'
    WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL2012-02')))

    ALTER AVAILABILITY GROUP GRUPO_ALW
    MODIFY REPLICA ON N'SQL2012-02'
    WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST=(N'SQL2012-01')))

    Grata!!!!

    segunda-feira, 30 de novembro de 2015 16:38

Respostas

  • Bom dia LaraW.

    Você colocou na sua string de conexão MultiSubnetFailover=True ? Por exemplo: "Database=AdventureWorks2012;ApplicationIntent=ReadOnly;MultiSubnetFailover=True"

    Existem outras opções que podem ser observadas em https://msdn.microsoft.com/pt-br/library/hh710054%28v=sql.110%29.aspx

    Para, após configurado a réplica somente leitura, você ter um direcionamento automático (a partir da string de intenção), você precisa informar ao primário para negar consultas. Para isto, além de informar  a opção Read-intent only, você precisa configurar a "Connections in primary role" para "Allow resd/write connections". Como disse, com isso, toda vez que uma conexão de intenção de leitura 'bater' no seu AG name, o primário irá negar a conexão e o listener fará o roteamento para o secundário.


    Luiz Fernando Lima - MCTS SQL Server - Microsoft Partner

    quarta-feira, 9 de dezembro de 2015 11:18

Todas as Respostas

  • LaraW,

    Sinceramente não entendi o que esta acontecendo?

    A sua aplicação esta configurado em qual servidor? Na verdade ela tem que acessar uma instância SQL Server e através desta instância que possui o AlwaysOn será feito o gerenciamento da réplica dos bancos.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 2 de dezembro de 2015 12:23
    Moderador
  • Bom dia LaraW.

    Você colocou na sua string de conexão MultiSubnetFailover=True ? Por exemplo: "Database=AdventureWorks2012;ApplicationIntent=ReadOnly;MultiSubnetFailover=True"

    Existem outras opções que podem ser observadas em https://msdn.microsoft.com/pt-br/library/hh710054%28v=sql.110%29.aspx

    Para, após configurado a réplica somente leitura, você ter um direcionamento automático (a partir da string de intenção), você precisa informar ao primário para negar consultas. Para isto, além de informar  a opção Read-intent only, você precisa configurar a "Connections in primary role" para "Allow resd/write connections". Como disse, com isso, toda vez que uma conexão de intenção de leitura 'bater' no seu AG name, o primário irá negar a conexão e o listener fará o roteamento para o secundário.


    Luiz Fernando Lima - MCTS SQL Server - Microsoft Partner

    quarta-feira, 9 de dezembro de 2015 11:18