SQL dinámico seguro con sp_executesql
El SQL dinámico sirve para filtros opcionales y formas variables, pero concatenar texto introduce inyección, errores de comillas, mala reutilización de planes y diagnóstico difícil.
SQL dinámico seguro con sp_executesql
El SQL dinámico sirve para filtros opcionales y formas variables, pero concatenar texto introduce inyección, errores de comillas, mala reutilización de planes y diagnóstico difícil.
Qué medir
Revisa cómo entran los valores, si los identificadores están limitados, si los parámetros tienen tipos exactos y cuántos planes distintos genera el texto.
Enfoque práctico
Pasa valores como parámetros de sp_executesql, limita identificadores y protégelos con QUOTENAME, mantén texto estable para la misma forma y registra por separado plantilla y valores.
Qué evitar
No concatenes entradas del usuario, no uses QUOTENAME para valores arbitrarios y no declares todas las cadenas como nvarchar(max).
Resultado operativo
El SQL dinámico es seguro y mantenible cuando la estructura está controlada y los datos siguen parametrizados.
Lista de producción
Captura una línea base y define la mejora esperada. Prueba con datos y concurrencia representativos. Conserva la configuración o el plan original, prepara una reversión, despliega en una ventana adecuada y observa el siguiente pico normal de carga.
Si quieres aplicar este método a un entorno SQL Server concreto, usa el formulario inferior e incluye la versión, el tamaño de la base, el patrón de carga y las evidencias ya recopiladas.