(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

DP-900: como dominar transacções ACID em Azure SQL Database

João Barros 22 de July de 2026 4 min de leitura

Neste guia vou ensinar a competência de transacções e propriedades ACID em bases de dados relacionais no Azure — um tema frequente no DP-900 e essencial na prática para garantir integridade dos dados. Vais ver o que é cada propriedade ACID, como executar transacções em Azure SQL Database e um exemplo prático em T-SQL.

O que precisas de saber

ACID é um conjunto de propriedades que descrevem o comportamento de transacções em sistemas relacionais:

  • Atomicidade: uma transacção é «tudo ou nada» — ou todas as alterações são aplicadas, ou nenhuma é aplicada.
  • Consistência: a transacção leva a base de dados de um estado consistente para outro estado consistente (regras de integridade são mantidas).
  • Isolamento: as transacções concorrentes não interferem de forma incontrolada entre si; o resultado é como se fossem executadas em série, dependendo do nível de isolamento.
  • Durabilidade: uma vez confirmada (COMMIT), a alteração permanece mesmo que haja falha do sistema.

No Azure, serviços como Azure SQL Database (PaaS) e SQL Server em VMs suportam transacções ACID. A forma como geres as transacções em T-SQL é a mesma; o serviço Azure trata da disponibilidade, durabilidade e recuperação.

Como funciona

Na prática, controlas transacções com comandos T-SQL: BEGIN TRAN, COMMIT e ROLLBACK. Usa TRY...CATCH para gerir erros e garantir ROLLBACK em caso de falha. Exemplo típico: transferir saldo entre duas contas — operação que deve ser atómica.

-- Exemplo simplificado: transferir 100 da conta A para a conta B
BEGIN TRANSACTION;

BEGIN TRY
    UPDATE Accounts SET Balance = Balance - 100 WHERE AccountId = 'A';
    UPDATE Accounts SET Balance = Balance + 100 WHERE AccountId = 'B';

    -- Verifica integridade simples
    IF (SELECT Balance FROM Accounts WHERE AccountId = 'A') < 0
    BEGIN
        THROW 50000, 'Saldo insuficiente', 1;
    END

    COMMIT TRANSACTION;
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION;
    -- Regista o erro (ex.: RAISERROR/PRINT/INSERT numa tabela de logs)
    DECLARE @ErrMsg NVARCHAR(4000) = ERROR_MESSAGE();
    PRINT @ErrMsg;
END CATCH;

Este padrão assegura atomicidade (ou a transferência completa ou nada), consistência (verificação do saldo), isolamento (outras transacções não verão estados intermédios, dependendo do nível de isolamento) e durabilidade (COMMIT torna a operação persistente).

Na prática — níveis de isolamento

O isolamento controla fenómenos como leitura suja, leitura não repetível e phantom reads. Os níveis comuns no SQL Server / Azure SQL Database são:

  • READ UNCOMMITTED — permite leituras sujas (mais rápido, menos seguro).
  • READ COMMITTED — padrão: evita leituras sujas.
  • REPEATABLE READ — evita leituras não repetíveis.
  • SERIALIZABLE — maior isolamento; impede phantom reads; pode reduzir a concorrência.
  • SNAPSHOT — isolamento baseado em versões; evita muitos bloqueios e evita leituras sujas/não repetíveis/phantoms, mas consome tempdb/recursos.

Escolher o nível correcto é um compromisso entre integridade e desempenho. Em Azure SQL Database, SNAPSHOT pode ser útil para cenários de leitura intensiva sem bloqueios.

Erros comuns

  • Não usar ROLLBACK em blocos TRY...CATCH — pode deixar a transacção aberta e causar bloqueios e deadlocks.
  • Escolher um nível de isolamento demasiado permissivo (READ UNCOMMITTED) para operações financeiras — arrisca leituras inconsistentes.
  • Manter transacções longas — quanto mais tempo uma transacção estiver aberta, maior a probabilidade de bloqueios e conflito com outras transacções. Faz transacções curtas e atomizadas.

Como praticar

Para praticar esta competência, usa o ambiente gratuito do Azure (ou uma instância local de SQL Server) e executa exercícios de criação de tabelas, simulação de transferências e testes com diferentes níveis de isolamento. A Microsoft fornece um Practice Assessment OFICIAL e gratuito para DP-900 e uma study guide no Microsoft Learn — ambos gratuitos e recomendados para orientar a tua revisão. Usa-os para verificar o teu conhecimento e para identificar áreas onde precisas de mais prática.

Em resumo

  • ACID define Atomicidade, Consistência, Isolamento e Durabilidade — são essenciais para confiabilidade das transacções.
  • Controla transacções com BEGIN TRAN / COMMIT / ROLLBACK e usa TRY...CATCH para gerir erros.
  • Escolhe o nível de isolamento adequado ao equilíbrio entre integridade e desempenho (READ COMMITTED, SNAPSHOT, SERIALIZABLE, ...).
  • Pratica em Azure SQL Database e usa o Practice Assessment e a study guide oficiais da Microsoft para avaliar o progresso.