Série What’s New on SQL Server 2022 – Operações ADD CONSTRAINT Resumable


Com o lançamento do SQL Server 2022, Azure SQL Database e Azure SQL Managed Instance, os administradores e desenvolvedores de banco de dados ganharam uma poderosa funcionalidade: operações resumable (resumable operations) para o comando ALTER TABLE ... ADD CONSTRAINT.

Essa novidade amplia as possibilidades de manutenção em tabelas grandes e melhora em muito a resiliência em ambientes de missão crítica.

O que são operações resumable?

As operações resumable permitem que comandos longos e pesados, como a criação ou reconstrução de índices e a partir de agora, a adição de constraints, sejam pausados, retomados ou continuados em caso de falhas. Isso oferece mais flexibilidade em ambientes que exigem alta disponibilidade e pouco tempo de manutenção.

Os índices resumable já estavam disponíveis para:

  • Criação e reconstrução de índices online (CREATE INDEX / ALTER INDEX)
  • Compatível com SQL Server 2019, Azure SQL Database e Managed Instance

E agora foi estendido para:

  • ALTER TABLE ADD CONSTRAINT com chaves PRIMARY KEY e UNIQUE KEY
  • Exclusivo no SQL Server 2022 em diante

Como funciona na prática?

A operação de ALTER TABLE ADD CONSTRAINT pode demorar horas em tabelas grandes, e antes, qualquer falha exigia reiniciar todo o processo. Com a nova funcionalidade, é possível:

  • Pausar e retomar a operação dentro de janelas de manutenção.
  • Continuar após falhas como quedas de conexão, failover ou falta de espaço em disco.
  • Evitar sobrecarga nos logs de transação, mesmo com pouco espaço disponível.

Requisitos necessários

  • O comando deve ser executado com a opção ONLINE = ON
  • Só se aplica a PRIMARY KEY e UNIQUE KEY
  • Não há suporte para FOREIGN KEY

Exemplo de uso

ALTER TABLE dbo.Clientes
ADD CONSTRAINT PK_Clientes PRIMARY KEY CLUSTERED (ID)
WITH (ONLINE = ON, RESUMABLE = ON, MAX_DURATION = 60);
  • ONLINE = ON: mantém a tabela disponível durante a operação.
  • RESUMABLE = ON: ativa a operação recomeçável.
  • MAX_DURATION = 60: pausa a operação automaticamente após 60 minutos.

Como pausar, retomar ou cancelar a operação

Para pausar, retomar ou cancelar a operação resumable, use os comandos do ALTER INDEX como no exemplo abaixo:

-- Pausar
ALTER INDEX PK_Clientes ON dbo.Clientes PAUSE;

-- Retomar
ALTER INDEX PK_Clientes ON dbo.Clientes RESUME;

-- Abortar
ALTER INDEX PK_Clientes ON dbo.Clientes ABORT;

Considerações finais

Essa novidade representa um grande avanço para quem administra bases de dados VLDB (Very Large Databases), especialmente em ambientes que não podem se dar ao luxo de longas janelas de indisponibilidade. As operações resumable trazem resiliência, flexibilidade e melhor aproveitamento dos recursos do servidor.


Quer mais dicas de T-SQL ou boas práticas para ambientes de alta disponibilidade? Deixe um comentário ou entre em contato!


Deixe um comentário