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

DP-900: cómo dominar transacciones ACID en Azure SQL Database

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

En esta guía voy a enseñar la competencia de transacciones y propiedades ACID en bases de datos relacionales en Azure —un tema frecuente en el DP-900 y esencial en la práctica para garantizar la integridad de los datos. Verás qué es cada propiedad ACID, cómo ejecutar transacciones en Azure SQL Database y un ejemplo práctico en T-SQL.

Lo que necesitas saber

ACID es un conjunto de propiedades que describen el comportamiento de las transacciones en sistemas relacionales:

  • Atomicidad: una transacción es «todo o nada» — o todos los cambios se aplican, o ninguno se aplica.
  • Consistencia: la transacción lleva la base de datos de un estado consistente a otro estado consistente (las reglas de integridad se mantienen).
  • Aislamiento: las transacciones concurrentes no interfieren de forma descontrolada entre sí; el resultado es como si se ejecutaran en serie, dependiendo del nivel de aislamiento.
  • Durabilidad: una vez confirmada (COMMIT), la modificación permanece incluso si hay una falla del sistema.

En Azure, servicios como Azure SQL Database (PaaS) y SQL Server en VMs soportan transacciones ACID. La forma en que gestionas las transacciones en T-SQL es la misma; el servicio Azure se encarga de la disponibilidad, durabilidad y recuperación.

Cómo funciona

En la práctica, controlas las transacciones con comandos T-SQL: BEGIN TRAN, COMMIT y ROLLBACK. Usa TRY...CATCH para gestionar errores y garantizar ROLLBACK en caso de fallo. Ejemplo típico: transferir saldo entre dos cuentas — operación que debe 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 patrón asegura atomicidad (o la transferencia completa o nada), consistencia (verificación del saldo), aislamiento (otras transacciones no verán estados intermedios, dependiendo del nivel de aislamiento) y durabilidad (COMMIT hace la operación persistente).

En la práctica — niveles de aislamiento

El aislamiento controla fenómenos como lectura sucia, lectura no repetible y phantom reads. Los niveles comunes en SQL Server / Azure SQL Database son:

  • READ UNCOMMITTED — permite lecturas sucias (más rápido, menos seguro).
  • READ COMMITTED — por defecto: evita lecturas sucias.
  • REPEATABLE READ — evita lecturas no repetibles.
  • SERIALIZABLE — mayor aislamiento; impide phantom reads; puede reducir la concurrencia.
  • SNAPSHOT — aislamiento basado en versiones; evita muchos bloqueos y evita lecturas sucias/no repetibles/phantoms, pero consume tempdb/recursos.

Elegir el nivel correcto es un compromiso entre integridad y rendimiento. En Azure SQL Database, SNAPSHOT puede ser útil para escenarios de lectura intensiva sin bloqueos.

Errores comunes

  • No usar ROLLBACK en bloques TRY...CATCH — puede dejar la transacción abierta y causar bloqueos y deadlocks.
  • Elegir un nivel de aislamiento demasiado permisivo (READ UNCOMMITTED) para operaciones financieras — arriesga lecturas inconsistentes.
  • Mantener transacciones largas — cuanto más tiempo esté abierta una transacción, mayor la probabilidad de bloqueos y conflicto con otras transacciones. Haz transacciones cortas y atomizadas.

Cómo practicar

Para practicar esta competencia, usa el entorno gratuito de Azure (o una instancia local de SQL Server) y ejecuta ejercicios de creación de tablas, simulación de transferencias y pruebas con diferentes niveles de aislamiento. Microsoft proporciona un Practice Assessment OFICIAL y gratuito para DP-900 y una study guide en Microsoft Learn — ambos gratuitos y recomendados para orientar tu repaso. Úsalos para verificar tu conocimiento y para identificar áreas donde necesitas más práctica.

En resumen

  • ACID define Atomicidad, Consistencia, Aislamiento y Durabilidad — son esenciales para la fiabilidad de las transacciones.
  • Controla transacciones con BEGIN TRAN / COMMIT / ROLLBACK y usa TRY...CATCH para gestionar errores.
  • Elige el nivel de aislamiento adecuado al equilibrio entre integridad y rendimiento (READ COMMITTED, SNAPSHOT, SERIALIZABLE, ...).
  • Practica en Azure SQL Database y usa el Practice Assessment y la study guide oficiales de Microsoft para evaluar el progreso.