Analysis Services com grupos de disponibilidade AlwaysOn

Aplica-se a:SQL Server para Windows

Um grupo de disponibilidade Always On é uma coleção predefinida de bancos de dados relacionais do SQL Server que fazem failover em conjunto quando determinadas condições disparam um failover em qualquer um deles, redirecionando as solicitações para um banco de dados espelhado em outra instância no mesmo grupo de disponibilidade. Se você estiver usando grupos de disponibilidade como sua solução de alta disponibilidade, poderá usar um banco de dados nesse grupo como uma fonte de dados em uma solução de tabela do Analysis Services ou multidimensional. Todas as operações do Analysis Services a seguir funcionam como esperado ao usar um banco de dados de disponibilidade: processamento ou importação de dados, consulta direta a dados relacionais (com armazenamento ROLAP ou modo DirectQuery) e gravação de volta.

O processamento e as consultas são cargas de trabalho de somente leitura. Você pode melhorar o desempenho transferindo essas cargas de trabalho para uma réplica secundária legível. Este cenário exige configuração adicional. Use a lista de verificação neste tópico para garantir que você siga todas as etapas.

Pré-requisitos

Você deve ter um logon do SQL Server em todas as réplicas. Você deve ser um sysadmin para configurar grupos de disponibilidade, ouvintes e bancos de dados, mas os usuários só precisam de permissões db_datareader para acessar o banco de dados de um cliente do Analysis Services.

Use um provedor de dados que oferece suporte ao protocolo TDS versão 7.4 ou mais recente, como o SQL Server Native Client 11.0 ou o Provedor de Dados para o SQL Server no .NET Framework 4.02.

(Para cargas de trabalho de apenas leitura). A função de réplica secundária deve ser configurada para conexões somente leitura; o grupo de disponibilidade deve ter uma lista de roteamento e a conexão na fonte de dados do Analysis Services deve especificar o ouvinte de grupo de disponibilidade. As instruções são fornecidas neste tópico.

Lista de verificação: use uma réplica secundária para operações somente de leitura

A menos que a solução Analysis Services inclua writeback, você pode configurar uma conexão da fonte de dados para usar uma réplica secundária legível. Se você tiver uma conexão de rede rápida, a réplica secundária terá latência de dados muito baixa, fornecendo dados quase idênticos aos da réplica primária. Ao usar a réplica secundária para operações do Analysis Services, você pode reduzir a contenção de leitura e gravação na réplica primária e obter melhor utilização das réplicas secundárias em seu grupo de disponibilidade.

Por padrão, tanto o acesso de leitura e gravação quanto o acesso com intenção de leitura são permitidos para a réplica primária, e não são permitidas conexões com réplicas secundárias. É necessária uma configuração adicional para configurar uma conexão de cliente somente leitura com uma réplica secundária. A configuração requer a definição de propriedades na réplica secundária e a execução de um script T-SQL que define uma lista de roteamento de somente leitura. Use os procedimentos a seguir para garantir que você executou ambas as etapas.

Observação

As etapas a seguir pressupõem a existência de um grupo de disponibilidade AlwaysOn e de bancos de dados. Se você estiver configurando um novo grupo, use o Assistente Novo Grupo de Disponibilidade para criar o grupo e unir os bancos de dados. O assistente verifica pré-requisitos, fornece orientação para cada etapa e executa a sincronização inicial. Para obter mais informações, consulte Usar o Assistente de Grupo de Disponibilidade (SQL Server Management Studio).

Etapa 1: configurar o acesso em uma réplica de disponibilidade

  1. No Pesquisador de Objetos, conecte-se à instância de servidor que hospeda a réplica primária e expanda a árvore de servidores.

    Observação

    Estas etapas foram extraídas de Configurar o acesso somente de leitura em uma réplica de disponibilidade (SQL Server), que fornece informações adicionais e instruções alternativas para realizar esta tarefa.

  2. Expanda os nós Always On High Availability e Availability Groups.

  3. Clique no grupo de disponibilidade cuja réplica você deseja alterar. Expanda Availability Replicas.

  4. Clique com o botão direito do mouse na réplica secundária e clique em Propriedades.

  5. Na caixa de diálogo Propriedades da Réplica de Disponibilidade, altere o acesso à conexão para a função secundária da seguinte forma:

    • Na lista suspensa Secundária legível , selecione Somente intenção de leitura.

    • Na lista suspensa Conexões na função principal, selecione Permitir todas as conexões. Esse é o padrão.

    • Opcionalmente, na lista suspensa Modo de disponibilidade, selecione Confirmação síncrona. Esta etapa não é necessária, mas sua definição garante que exista a paridade de dados entre as réplicas primária e secundária.

      Esta propriedade também é um requisito para failover planejado. Se você desejar executar um failover manual planejado para fins de testes, defina Modo de disponibilidade como Confirmação síncrona para as réplicas primária e secundária.

Etapa 2: Configurar o roteamento somente de leitura

  1. Conecte-se à réplica primária.

    Observação

    Estas etapas foram extraídas de Configurar o roteamento somente leitura para um grupo de disponibilidade (SQL Server), que fornece informações adicionais e instruções alternativas para realizar essa tarefa.

  2. Abra uma janela de consulta e cole o script a seguir. Este script executa três ações: habilita conexões de leitura com uma réplica secundária (o que está desabilitado por padrão), define a URL de roteamento somente leitura e cria a lista de roteamento que define a prioridade de como as solicitações de conexão são direcionadas. A primeira instrução, que permite conexões legíveis, será redundante se você já tiver definido as propriedades no Management Studio, mas será incluída para manter a integridade.

    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER01' WITH   
    (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
    
    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER01' WITH   
    (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));  
    
    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER02' WITH   
    (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));  
    
    ALTER AVAILABILITY GROUP [AG1]  
     MODIFY REPLICA ON  
    N'COMPUTER02' WITH   
    (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));  
    
    ALTER AVAILABILITY GROUP [AG1]   
    MODIFY REPLICA ON  
    N'COMPUTER01' WITH   
    (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));  
    
    ALTER AVAILABILITY GROUP [AG1]   
    MODIFY REPLICA ON  
    N'COMPUTER02' WITH   
    (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));  
    GO  
    
  3. Modifique o script, substituindo os marcadores por valores válidos para sua implantação:

    • Substitua 'Computer01' pelo nome da instância do servidor que hospeda a réplica primária.

    • Substitua 'Computer02' pelo nome da instância do servidor que hospeda a réplica secundária.

    • Substitua 'contoso.com' pelo nome de seu domínio ou omita-o do script se todos os computadores estiverem no mesmo domínio. Mantenha o número da porta se o ouvinte estiver usando a porta padrão. A porta que é usada de fato pelo ouvinte é listada na página de propriedades no Management Studio.

  4. Execute o script.

    Em seguida, crie uma fonte de dados em um modelo do Analysis Services que usa um banco de dados do grupo recém-configurado.

Criar uma fonte de dados do Analysis Services usando um banco de dados de disponibilidade AlwaysOn

Esta seção explica como criar uma fonte de dados do Analysis Services que conecta a um banco de dados em um grupo de disponibilidade. Você pode usar estas instruções para configurar uma conexão a uma réplica primária (padrão) ou a uma réplica secundária legível configurada com base em etapas de uma seção anterior. As configurações do AlwaysOn, mais as propriedades de conexão definidas no cliente, determinarão se uma réplica primária ou secundária é usada.

  1. No SQL Server Data Tools, em um projeto de Modelo Multidimensional e de Mineração de Dados do Analysis Services, clique com o botão direito do mouse em Fontes de Dados e selecione Nova Fonte de Dados. Clique em Novo para criar uma nova fonte de dados.

    Outra alternativa para um projeto de modelo de tabela é clicar no menu Modelo e em Importar de Fonte de Dados.

  2. Em Gerenciador de Conexões, em Provedor, escolha um provedor que ofereça suporte ao protocolo TDS. O SQL Server Native Client 11.0 oferece suporte a esse protocolo.

  3. Em Gerenciador de Conexões, em Nome do Servidor, insira o nome do ouvinte de grupo de disponibilidadee escolha um banco de dados que esteja disponível no grupo.

    O ouvinte de grupo de disponibilidade redireciona uma conexão de cliente a uma réplica primária para solicitações de leitura/gravação ou para uma réplica secundária quando você especifica a intenção de leitura na cadeia de conexão. Como as funções de réplica mudarão durante um failover (no qual a primária se torna secundária e uma secundária se torna primária), você deve sempre especificar o ouvinte para que a conexão do cliente seja redirecionada adequadamente.

    Para determinar o nome do listener do grupo de disponibilidade, você pode perguntar a um administrador de banco de dados ou se conectar a uma instância no grupo de disponibilidade e exibir a configuração de disponibilidade do Always On.

  4. Ainda no Gerenciador de Conexões, clique em Tudo no painel de navegação esquerdo para exibir a grade de propriedades do provedor de dados.

    Defina Intenção do Aplicativo para READONLY se você estiver configurando uma conexão de cliente somente para leitura para uma réplica secundária. Caso contrário, mantenha o READWRITE padrão para redirecionar a conexão para a réplica primária.

  5. Em Informações de Representação, selecione Usar um nome de usuário e senha específicos do Windows, e insira uma conta de usuário de domínio do Windows que tenha pelo menos as permissões db_datareader no banco de dados.

    Não escolha Usar as credenciais do usuário atual ou Herdar. Você pode escolher Usar a conta de serviço, mas apenas se essa conta tiver permissões de leitura no banco de dados.

    Conclua a fonte de dados e feche o Assistente de Fonte de Dados.

  6. Adicione MultiSubnetFailover=Yes à cadeia de conexão para fornecer detecção mais rápida e conexão ao servidor ativo. Para obter mais informações sobre essa propriedade, consulte Suporte do SQL Server Native Client à alta disponibilidade e recuperação de desastre.

    Esta propriedade não está visível na grade de propriedades. Para adicionar a propriedade, clique com o botão direito do mouse na fonte de dados e escolha Exibir Código. Adicione MultiSubnetFailover=Yes à cadeia de conexão.

A fonte de dados é definida agora. Você pode continuar a criar um modelo, começando pela exibição da fonte de dados ou, no caso de modelos de tabela, criando relações. Quando você chega a tal ponto em que dados precisam ser recuperados do banco de dados de disponibilidade (por exemplo, quando você está pronto para processar ou implantar a solução), pode testar a configuração para verificar se dados são acessados da réplica secundária.

Testar a configuração

Depois de configurar a réplica secundária e criar uma conexão com a fonte de dados no Analysis Services, você pode confirmar que os comandos de processamento e de consulta são redirecionados para a réplica secundária. Você também pode executar um failover manual planejado para verificar seu plano de recuperação para este cenário.

Etapa 1: confirmar que a conexão da fonte de dados é redirecionada para a réplica secundária

  1. Inicie o SQL Server Profiler e conecte à instância do SQL Server que hospeda a réplica secundária.

    Quando o rastreamento for executado, os eventos SQL:BatchStarting e SQL:BatchCompleting mostrarão as consultas emitidas do Analysis Services que são executadas na instância do mecanismo de banco de dados. Estes eventos são selecionados por padrão; portanto, você só precisa iniciar o rastreamento.

  2. No SQL Server Data Tools, abra o projeto ou a solução do Analysis Services que contém uma conexão da fonte de dados a ser testada. Verifique se a fonte de dados especifique o ouvinte do grupo de disponibilidade, e não uma instância do grupo.

    Essa etapa é importante. O roteamento para a réplica secundária não será realizado se você especificar o nome da instância do servidor.

  3. Organize as janelas de aplicativo de forma que possa exibir o SQL Server Profiler e o SQL Server Data Tools lado a lado.

  4. Implante a solução e, quando ela for concluída, pare o rastreamento.

    Na janela de rastreamento, você deve consultar eventos do aplicativo Microsoft SQL Server Analysis Services. Você deve ver instruções SELECT que recuperam dados de um banco de dados na instância do servidor que hospeda a réplica secundária, o que comprova que a conexão foi feita por meio do listener com a réplica secundária.

Etapa 2: executar um failover planejado para testar a configuração

  1. No Management Studio , verifique as réplicas primária e secundária para garantir que ambas estão configuradas para o modo de confirmação síncrona e estão sincronizadas no momento.

    As etapas a seguir assumem que uma réplica secundária é configurada para a confirmação síncrona.

    Para verificar a sincronização, abra uma conexão com cada instância que hospeda as réplicas primária e secundária, expanda a pasta Bancos de Dados e verifique se o banco de dados tem (Sincronizado) e (Sincronizando) anexados a seu nome em cada réplica.

    Observação

    Estas etapas foram extraídas de Executar um failover manual planejado de um grupo de disponibilidade (SQL Server), que fornece informações adicionais e instruções alternativas para executar esta tarefa.

  2. No SQL Server Profiler, inicie os rastreamentos para cada réplica e exiba os rastreamentos lado a lado. Nas etapas a seguir, você comparará rastros, confirmando que as consultas SQL usadas para processamento ou consulta no Analysis Services passam de uma réplica para a outra.

  3. Execute um comando de processamento ou de consulta do Analysis Services. Como você configurou a origem de dados para uma conexão somente para leitura, deverá ver o comando ser executado na réplica secundária.

  4. No Management Studio, conecte-se à réplica secundária.

  5. Expanda os nós Always On High Availability e Availability Groups.

  6. Clique com o botão direito do mouse no grupo de disponibilidade do qual fazer failover e selecione o comando Failover . Isso inicia o Assistente de Grupo de Disponibilidade de Failover. Use o assistente para escolher a réplica da qual será criada a nova réplica primária.

  7. Confirme que o failover foi bem-sucedido:

    • No Management Studio, expanda os grupos de disponibilidade para exibir as designações (primária) e (secundária). A instância que antes era uma réplica primária agora deve ser uma réplica secundária.

    • Visualize o painel para determinar se foram detectados problemas de funcionamento. Clique com o botão direito do mouse no grupo de disponibilidade e selecione Mostrar Painel.

  8. Aguarde um ou dois minutos para que o failover seja concluído no backend.

  9. Repita o comando de processamento ou de consulta na solução do Analysis Services e observe os rastreamentos lado a lado no SQL Server Profiler. Você deve ver evidências de processamento na outra instância, que agora é a nova réplica secundária.

O que acontece após ocorrer um failover

Durante um failover, uma réplica secundária assume a função primária, e a antiga réplica primária assume a função secundária. Todas as conexões de cliente são encerradas, a propriedade do listener do grupo de disponibilidade é transferida com a função da réplica primária para uma nova instância do SQL Server, e o endpoint do listener é vinculado aos endereços IP virtuais e às portas TCP da nova instância. Para obter mais informações, consulte Sobre o acesso de conexão do cliente às réplicas de disponibilidade (SQL Server).

Se o failover ocorrer durante o processamento, o seguinte erro ocorrerá no Analysis Services no arquivo de log ou na janela de saída: "Ocorre o seguinte erro de OLE DB ou ODBC: falha no link de comunicação; 08S01; Provedor TPC: uma conexão existente foi fechada à força pelo host remoto. ; 08S01."

Este erro deverá ser resolvido se você aguardar um minuto e tentar novamente. Se o grupo de disponibilidade estiver configurado corretamente para uma réplica secundária legível, o processamento será retomado na nova réplica secundária quando você tentar processar novamente.

A causa mais provável de erros persistentes é um problema de configuração. Você pode tentar executar novamente o script T-SQL para resolver problemas na lista de roteamento, nas URLs de roteamento somente de leitura e na intenção de leitura na réplica secundária. Você também deve verificar se a réplica primária permite todas as conexões.

Gravação de volta ao usar um banco de dados de disponibilidade do Always On

Writeback é um recurso do Analysis Services que oferece suporte à análise de hipóteses no Excel. Ele também costuma ser usado para orçar e prever tarefas em aplicativos personalizados.

O suporte ao writeback exige uma conexão de cliente READWRITE. No Excel, se você tentar gravar novamente em uma conexão somente leitura, ocorrerá o seguinte erro: "Não foi possível recuperar dados da fonte de dados externa".

Se você configurou uma conexão para sempre acessar uma réplica secundária legível, configure uma nova conexão que usa uma conexão READWRITE para a réplica primária.

Para fazer isso, crie uma fonte de dados adicional em um modelo do Analysis Services para dar suporte à conexão de leitura e gravação. Ao criar a fonte de dados adicional, use o mesmo nome de ouvinte e banco de dados especificados na conexão somente leitura, mas, em vez de modificar a Intenção de Aplicativo, mantenha o padrão que dá suporte a conexões READWRITE. Agora você pode adicionar novas tabelas de fatos ou de dimensões à exibição da fonte de dados, baseadas na fonte de dados de leitura e gravação, e depois habilitar a gravação de volta nas novas tabelas.