La plantilla que casi todos escriben mal

Cómo hago que un stored procedure revierta todo si falla a la mitad?

Cuaderno N°03 · Serie «Trucos de T-SQL para tu DW»

Por Javier Loria · Lectura ~12 min · SQL Server · Stored Procedures · ETL

La pregunta separa dos finales de una carga nocturna. En el bueno, la carga se revierte completa con un rollback limpio, el proceso avisa con el error real, y a la mañana alguien lo arregla en cinco minutos. En el malo queda a medias —media tabla cargada, el mes anterior borrado— y el proceso reporta que todo salió bien; el dato malo viaja a los reportes y lo descubre negocio semanas después.

La diferencia no es suerte: es cómo está escrito el manejo de errores y transacciones. Este cuaderno arma, pieza por pieza, la plantilla de un SP de ETL que falla de forma segura: TRY/CATCH, SET XACT_ABORT ON y THROW, en el orden correcto y con las trampas que casi todos pisan.

Qué vas a encontrar:

  • Por qué la transacción «decorativa» no protege nada.
  • El fix de una línea: SET XACT_ABORT ON y por qué cambia todo.
  • La trampa del RAISERROR que disfraza el error real.
  • La trampa del log que se borra a sí mismo.
  • La plantilla completa, lista para copiar a tus SP.
  • Qué cambia si estás en Microsoft Fabric.