Non eseguire query dinamiche costruendo stringhe ed ESEGUndole.
Usa sp_executesql
e passare i parametri come parametri.
Scoprirai che sql injection non c'è più.
MODIFICA :scusa, avevo fretta e ho scritto il comando sbagliato. non è sp_execute, è sp_executesql; richiede una stringa e un set di parametri:tutta la codifica e l'escape dei parametri viene eseguita da SQL Server.
EDIT2 :spiegazione dell'istruzione sp_executesql