Failover forçado (FORCE_FAILOVER_ALLOW_DATA_LOSS) e recuperação pós-failover
SQL ServerAlways On e HAComando
-- 1) On each candidate secondary: pick the most current one (highest end_of_log_lsn)
SELECT ag.name AS ag_name, DB_NAME(drs.database_id) AS db,
drs.synchronization_state_desc, drs.end_of_log_lsn, drs.last_commit_time
FROM sys.dm_hadr_database_replica_states drs
JOIN sys.availability_groups ag ON ag.group_id = drs.group_id
WHERE drs.is_local = 1;
-- 2) On the chosen replica (while the primary is unreachable):
ALTER AVAILABILITY GROUP [AG_Musteri] FORCE_FAILOVER_ALLOW_DATA_LOSS;
-- 3) On the other secondaries, resume the suspended data movement:
ALTER DATABASE [Musteri] SET HADR RESUME;
-- 4) When the old primary returns (now a SUSPENDED secondary):
-- take a snapshot first to inspect the lost transactions, then resume
CREATE DATABASE [Musteri_lost_snap]
ON (NAME = N'Musteri', FILENAME = N'D:\Data\Musteri_lost_snap.ss')
AS SNAPSHOT OF [Musteri];
ALTER DATABASE [Musteri] SET HADR RESUME;O que faz
Torna uma réplica de DR o primário, aceitando perda de dados, quando o primário é perdido por completo; depois retoma a movimentação de dados suspensa nas outras réplicas e, quando o antigo primário volta, cria um snapshot para inspecionar as transações que nunca chegaram ao novo primário.
Quando usar
Quando o data center primário está fora, sobrou apenas uma réplica assíncrona, ou uma réplica síncrona não está SYNCHRONIZED e ainda assim é preciso fazer failover.
Atenção
PERDA DE DADOS: as transações após o último LSN hardened são perdidas. Obtenha antes o aval do negócio sobre o RPO. Após um failover forçado, todos os bancos secundários ficam SUSPENDED; o log não é truncado e cresce até o HADR RESUME. Se o quorum do WSFC for perdido, inicie antes o cluster com quorum forçado (PowerShell: Start-ClusterNode -FixQuorum), senão o comando falha. HADR RESUME no antigo primário descarta permanentemente as transações perdidas; não retome sem criar o snapshot.