Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server
No SQL Server 2012 e 2014, se um banco de dados que faz parte de um grupo de disponibilidade na réplica primária perder a capacidade de gravar as transações, ele não disparará um failover, mesmo se as réplicas estiverem sincronizadas e configuradas para failover automático.
O SQL Server 2016 introduz um novo comportamento opcional chamado failover de banco de dados avançado que pode ser definido pelo Assistente ou com o Transact-SQL. Se essa opção estiver habilitada e o failover automático for configurado, quando um banco de dados que faz parte de um grupo de disponibilidade não puder mais gravar transações, isso disparará um failover em uma réplica secundária sincronizada.
Cenário 1
Um grupo de disponibilidade é configurado entre a Instância A e a Instância B, que contém um banco de dados individual chamado DB1. O arquivo de dados do DB1 está na Unidade E e seu arquivo de log de transações está na Unidade f. O modo de disponibilidade é definido como confirmação síncrona com failover automático. A nova opção de failover de banco de dados avançado é configurada no grupo de disponibilidade. As duas réplicas estão em um estado sincronizado no momento. Um problema faz com que a Unidade E falhe. Esse cenário não causará um failover de banco de dados avançado, pois a Unidade E não contém o log de transações.
No cenário acima, se o erro 823 for informado quatro vezes consecutivas enquanto a opção de failover de banco de dados estiver definida como ativada, o SQL Server informará ao Cluster de failover do Windows para executar a ação apropriada com base na política de failover de Função do AG. Isso pode ser configurado para executar um failover ou executar uma reinicialização do recurso.
Cenário 2
Isso tem a mesma configuração de grupo de disponibilidade do Cenário 1. Em vez da Unidade E falhar, desta vez, a unidade do log de transações, Unidade F, falha. Isso disparará um failover, pois atende à condição abrangida pelo failover de banco de dados avançado: o log de transações não está acessível, o que significa que o banco de dados não pode gravar transações.
Cenário 3
Um grupo de disponibilidade é configurado entre a Instância A e a Instância B, que contém dois bancos de dados: DB1 e DB2. O modo de disponibilidade é definido como confirmação síncrona com um modo de failover automático e o failover de banco de dados avançado está habilitado. O acesso ao disco que contém dados e os arquivos de log de transações do DB2 é perdido. Quando o problema for detectado, o grupo de disponibilidade fará failover automaticamente para a Instância B.
Configurar o failover avançado
O failover de banco de dados avançado pode ser configurado com o SQL Server Management Studio ou o Transact-SQL. Atualmente, os cmdlets do PowerShell não têm essa capacidade. Por padrão, o failover de banco de dados avançado está desabilitado.
SQL Server Management Studio
É possível habilitar o failover de banco de dados avançado durante a criação de um grupo de acessibilidade usando o SQL Server Management Studio. A única maneira de desabilitá-lo ou habilitá-lo depois de criar o grupo de disponibilidade é usar o Transact-SQL.
Criação manual de grupo de disponibilidade
Use as instruções encontradas no artigo Usar a caixa de diálogo Novo Grupo de Disponibilidade (SQL Server Management Studio) para criar o grupo de disponibilidade. Para habilitar o failover de banco de dados avançado, marque sua caixa de seleção ao lado de Detecção de Integridade no Nível do Banco de Dados.
Usando o Assistente de Grupo de Disponibilidade
Use as instruções encontradas no artigo Usar o Assistente de Grupo de Disponibilidade (SQL Server Management Studio). A opção para habilitar o failover de banco de dados avançado foi encontrada na caixa de diálogo Especificar Nome do Grupo de Disponibilidade. Para habilitá-la, marque a caixa ao lado de Detecção de Integridade no Nível do Banco de Dados.
Transact-SQL
Para configurar o comportamento de failover de banco de dados avançado durante a criação de um grupo de disponibilidade, DB_FAILOVER deve ser definido como ON, da seguinte maneira:
CREATE AVAILABILITY GROUP [AGNAME]
WITH ( DB_FAILOVER = ON)
...
Para adicionar esse comportamento depois que um grupo de disponibilidade for configurado, use o comando ALTER AVAILABILITY GROUP:
ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = ON)
Para desabilitar esse comportamento, emita o seguinte comando ALTER AVAILABILITY GROUP:
ALTER AVAILABILITY GROUP [AGNAME] SET (DB_FAILOVER = OFF)
Exibição de gerenciamento dinâmico
Para ver se um grupo de disponibilidade foi habilitado para o failover de banco de dados avançado, consulte a exibição de gerenciamento dinâmico sys.availability_groups
. A coluna db_failover
terá um zero se ele estiver desabilitado ou 1 se estiver habilitado.