¿Cómo hago lo mismo en todas las tablas sin escribirlo cincuenta veces?
Cuaderno N°12 · Serie «Trucos de T-SQL para tu DW»
Lectura ~13 min · SQL Server · Metaprogramación · Data Warehouse
La pregunta aparece apenas un data warehouse pasa de un puñado de tablas. El reflejo es copiar y pegar el mismo patrón (el hash de cambios, el JOIN de carga, un conteo de auditoría) tabla por tabla, y rezar para acordarse de actualizar las cincuenta cuando el esquema cambia. No pasa: alguien agrega una columna, se olvida de un script, y el bug vive callado meses.
La salida es generar SQL dinámicamente desde el catálogo —leer INFORMATION_SCHEMA y dejar que el SQL escriba el SQL—, el patrón que en la industria llaman metadata-driven SQL. Este cuaderno muestra cómo, con STRING_AGG y sp_executesql, generar SQL para todas las tablas desde su metadata, y las trampas que separan un generador seguro de un agujero de inyección.
Qué vas a encontrar:
- El problema: escribirlo a mano N veces y mantenerlo sincronizado.
- El truco: lee el catálogo, genera el SQL.
- El segundo generador: el JOIN desde la llave real.
- Por qué QUOTENAME, siempre (la defensa contra inyección).
- Por qué el orden importa y STRING_AGG no lo garantiza solo.
- Lo que el catálogo no te dice (los límites del enfoque).
- Qué cambia si estás en Microsoft Fabric.
